日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java 封装 继承 堕胎_Java的继承、封装和多态

發(fā)布時(shí)間:2023/12/10 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 封装 继承 堕胎_Java的继承、封装和多态 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、繼承

繼承就是子類繼承父類的特征和行為,使得子類對(duì)象(實(shí)例)具有父類的實(shí)例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。

繼承的特性

子類擁有父類非 private 的屬性、方法。

子類可以擁有自己的屬性和方法,即子類可以對(duì)父類進(jìn)行擴(kuò)展。

子類可以用自己的方式實(shí)現(xiàn)父類的方法。

Java 的繼承是單繼承,但是可以多重繼承,單繼承就是一個(gè)子類只能繼承一個(gè)父類,多重繼承就是,例如 A 類繼承 B 類,B 類繼承 C 類,所以按照關(guān)系就是 C 類是 B 類的父類,B 類是 A 類的父類,這是 Java 繼承區(qū)別于 C++ 繼承的一個(gè)特性。

提高了類之間的耦合性(繼承的缺點(diǎn),耦合度高就會(huì)造成代碼之間的聯(lián)系越緊密,代碼獨(dú)立性越差)。

繼承關(guān)鍵字

繼承可以使用 extends 和 implements 這兩個(gè)關(guān)鍵字來(lái)實(shí)現(xiàn)繼承,而且所有的類都是繼承于 java.lang.Object,當(dāng)一個(gè)類沒(méi)有繼承的兩個(gè)關(guān)鍵字,則默認(rèn)繼承object(這個(gè)類在 java.lang包中,所以不需要 import)祖先類。

extends關(guān)鍵字

在 Java 中,類的繼承是單一繼承,也就是說(shuō),一個(gè)子類只能擁有一個(gè)父類,所以 extends 只能繼承一個(gè)類。

implements關(guān)鍵字

使用 implements 關(guān)鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時(shí)繼承多個(gè)接口(接口跟接口之間采用逗號(hào)分隔)。

super 與 this 關(guān)鍵字

super關(guān)鍵字:我們可以通過(guò)super關(guān)鍵字來(lái)實(shí)現(xiàn)對(duì)父類成員的訪問(wèn),用來(lái)引用當(dāng)前對(duì)象的父類。

this關(guān)鍵字:指向自己的引用。

final關(guān)鍵字

final 關(guān)鍵字聲明類可以把類定義為不能繼承的,即最終類;或者用于修飾方法,該方法不能被子類重寫(xiě):

構(gòu)造器

子類是不繼承父類的構(gòu)造器(構(gòu)造方法或者構(gòu)造函數(shù))的,它只是調(diào)用(隱式或顯式)。如果父類的構(gòu)造器帶有參數(shù),則必須在子類的構(gòu)造器中顯式地通過(guò) super關(guān)鍵字調(diào)用父類的構(gòu)造器并配以適當(dāng)?shù)膮?shù)列表。

如果父類構(gòu)造器沒(méi)有參數(shù),則在子類的構(gòu)造器中不需要使用 super關(guān)鍵字調(diào)用父類構(gòu)造器,系統(tǒng)會(huì)自動(dòng)調(diào)用父類的無(wú)參構(gòu)造器。

補(bǔ)充

父類成員訪問(wèn)屬性在父類中的含義在子類中的含義

public

對(duì)所有人開(kāi)放

對(duì)所有人開(kāi)放

protected

只有包內(nèi)其它類、自己和子類可以訪問(wèn)

只有包內(nèi)其它類、自己和子類可以訪問(wèn)

缺省

只有包內(nèi)其它類可以訪問(wèn)

如果子類與父類在同一個(gè)包內(nèi):只有包內(nèi)其它類可以訪問(wèn),否則:相當(dāng)于private,不能訪問(wèn)

private

只有自己可以訪問(wèn)

不能訪問(wèn)

二、Java 重寫(xiě)(Override)與重載(Overload)

重寫(xiě)(Override)

重寫(xiě)是子類對(duì)父類的允許訪問(wèn)的方法的實(shí)現(xiàn)過(guò)程進(jìn)行重新編寫(xiě), 返回值和形參都不能改變。

即外殼不變,核心重寫(xiě)!

重寫(xiě)的好處在于子類可以根據(jù)需要,定義特定于自己的行為。 也就是說(shuō)子類能夠根據(jù)需要實(shí)現(xiàn)父類的方法。

重寫(xiě)方法不能拋出新的檢查異常或者比被重寫(xiě)方法申明更加寬泛的異常。例如: 父類的一個(gè)方法申明了一個(gè)檢查異常 IOException,但是在重寫(xiě)這個(gè)方法的時(shí)候不能拋出 Exception 異常,因?yàn)?Exception 是 IOException 的父類,只能拋出 IOException 的子類異常。

方法的重寫(xiě)規(guī)則

參數(shù)列表必須完全與被重寫(xiě)方法的相同。

返回類型與被重寫(xiě)方法的返回類型可以不相同,但是必須是父類返回值的派生類(java5 及更早版本返回類型要一樣,java7 及更高版本可以不同)。

訪問(wèn)權(quán)限不能比父類中被重寫(xiě)的方法的訪問(wèn)權(quán)限更低。例如:如果父類的一個(gè)方法被聲明為 public,那么在子類中重寫(xiě)該方法就不能聲明為 protected。

父類的成員方法只能被它的子類重寫(xiě)。

聲明為 final 的方法不能被重寫(xiě)。

聲明為 static 的方法不能被重寫(xiě),但是能夠被再次聲明。

子類和父類在同一個(gè)包中,那么子類可以重寫(xiě)父類所有方法,除了聲明為 private 和 final 的方法。

子類和父類不在同一個(gè)包中,那么子類只能夠重寫(xiě)父類的聲明為 public 和 protected 的非 final 方法。

重寫(xiě)的方法能夠拋出任何非強(qiáng)制異常,無(wú)論被重寫(xiě)的方法是否拋出異常。但是,重寫(xiě)的方法不能拋出新的強(qiáng)制性異常,或者比被重寫(xiě)方法聲明的更廣泛的強(qiáng)制性異常,反之則可以。

構(gòu)造方法不能被重寫(xiě)。

如果不能繼承一個(gè)方法,則不能重寫(xiě)這個(gè)方法。

Super 關(guān)鍵字的使用

當(dāng)需要在子類中調(diào)用父類的被重寫(xiě)方法時(shí),要使用 super 關(guān)鍵字。

重載(Overload)

重載(overloading) 是在一個(gè)類里面,方法名字相同,而參數(shù)不同。返回類型可以相同也可以不同。

每個(gè)重載的方法(或者構(gòu)造函數(shù))都必須有一個(gè)獨(dú)一無(wú)二的參數(shù)類型列表。

最常用的地方就是構(gòu)造器的重載。

重載規(guī)則:

被重載的方法必須改變參數(shù)列表(參數(shù)個(gè)數(shù)或類型不一樣);

被重載的方法可以改變返回類型;

被重載的方法可以改變?cè)L問(wèn)修飾符;

被重載的方法可以聲明新的或更廣的檢查異常;

方法能夠在同一個(gè)類中或者在一個(gè)子類中被重載。

無(wú)法以返回值類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。

重寫(xiě)與重載之間的區(qū)別

區(qū)別點(diǎn)重載方法重寫(xiě)方法

參數(shù)列表

必須修改

一定不能修改

返回類型

可以修改

一定不能修改

異常

可以修改

可以減少或刪除,一定不能拋出新的或者更廣的異常

訪問(wèn)

可以修改

一定不能做更嚴(yán)格的限制(可以降低限制)

總結(jié)

方法的重寫(xiě)(Overriding)和重載(Overloading)是java多態(tài)性的不同表現(xiàn),重寫(xiě)是父類與子類之間多態(tài)性的一種表現(xiàn),重載可以理解成多態(tài)的具體表現(xiàn)形式。

(1)方法重載是一個(gè)類中定義了多個(gè)方法名相同,而他們的參數(shù)的數(shù)量不同或數(shù)量相同而類型和次序不同,則稱為方法的重載(Overloading)。

(2)方法重寫(xiě)是在子類存在方法與父類的方法的名字相同,而且參數(shù)的個(gè)數(shù)與類型一樣,返回值也一樣的方法,就稱為重寫(xiě)(Overriding)。

(3)方法重載是一個(gè)類的多態(tài)性表現(xiàn),而方法重寫(xiě)是子類與父類的一種多態(tài)性表現(xiàn)。

三、Java多態(tài)

多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。

多態(tài)的優(yōu)點(diǎn)

消除類型之間的耦合關(guān)系

可替換性

可擴(kuò)充性

接口性

靈活性

簡(jiǎn)化性

多態(tài)存在的三個(gè)必要條件

繼承

重寫(xiě)

父類引用指向子類對(duì)象

總結(jié)

以上是生活随笔為你收集整理的java 封装 继承 堕胎_Java的继承、封装和多态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。