繼承extends

繼承extends

3.1、什么是繼承,有什么用?

繼承:在現(xiàn)實世界當中也是存在的,例如:父親很有錢,兒子不用努力也很有錢。

繼承的作用:

基本作用:子類繼承父類,代碼可以得到復用。(這個不是重要的作用,是基本作用。)

主要(重要)作用:因為有了繼承關(guān)系,才有了后期的方法覆蓋和多態(tài)機制。

3.2、繼承的相關(guān)特性

① B類繼承A類,則稱A類為超類(superclass)、父類、基類,

B類則稱為子類(subclass)、派生類、擴展類。

class A{}

class B extends A{}

我們平時聊天說的比較多的是:父類和子類。

superclass 父類

subclass 子類

② java 中的繼承只支持單繼承,不支持多繼承,C++中支持多繼承,

這也是 java 體現(xiàn)簡單性的一點,換句話說,java 中不允許這樣寫代碼:

class B extends A,C{ } 這是錯誤的。

③ 雖然 java 中不支持多繼承,但有的時候會產(chǎn)生間接繼承的效果,

例如:class C extends B,class B extends A,也就是說,C 直接繼承 B,

其實 C 還間接繼承 A。

④ java 中規(guī)定,子類繼承父類,除構(gòu)造方法不能繼承之外,剩下都可以繼承。

但是私有的屬性無法在子類中直接訪問。(父類中private修飾的不能在子類中

直接訪問??梢酝ㄟ^間接的手段來訪問。)

⑤ java 中的類沒有顯示的繼承任何類,則默認繼承 Object類,Object類是

java 語言提供的根類(老祖宗類),也就是說,一個對象與生俱來就有

Object類型中所有的特征。

⑥ 繼承也存在一些缺點,例如:CreditAccount 類繼承 Account 類會導致它

們之間的耦合度非常高,Account 類發(fā)生改變之后會馬上影響到 CreditAccount 類


繼承extends

1.1、測試:子類繼承父類之后,能使用子類對象調(diào)用父類方法嗎?

可以,因為子類繼承了父類之后,這個方法就屬于子類了。

當然可以使用子類對象來調(diào)用。

1.2、在實際開發(fā)中,滿足什么條件的時候,我可以使用繼承呢?

凡是采用“is a”能描述的,都可以繼承。

例如:

Cat is a Animal:貓是一個動物

Dog is a Animal:狗是一個動物

CreditAccount is a Account:信用卡賬戶是一個銀行賬戶

....

假設以后的開發(fā)中有一個A類,有一個B類,A類和B類確實也有重復的代碼,

那么他們兩個之間就可以繼承嗎?不一定,還是要看一看它們之間是否能夠

使用is a來描述。

class Customer{

String name; // 名字

// setter and getter

}

class Product{

String name; // 名字

// setter and getter

}

class Product extends Customer{

}

以上的繼承就屬于很失敗的。因為:Product is a Customer,是有違倫理的。

1.3、任何一個類,沒有顯示繼承任何類,默認繼承Object,那么Object類當中有

哪些方法呢?老祖宗為我們提供了哪些方法?

以后慢慢的大家一定要適應看JDK的源代碼(多看看牛人寫的程序自己才會變成牛人。)

先模仿后超越。

java為什么比較好學呢?

是因為Java內(nèi)置了一套龐大的類庫,程序員不需要從0開始寫代碼,程序員可以

基于這套龐大的類庫進行“二次”開發(fā)。(開發(fā)速度較快,因為JDK內(nèi)置的這套庫

實現(xiàn)了很多基礎的功能。)

例如:String是SUN編寫的字符串類、System是SUN編寫的系統(tǒng)類。

這些類都可以拿來直接使用。

JDK源代碼在什么位置?

C:\Program Files\Java\jdk-13.0.2\lib\src.zip

你現(xiàn)在能看懂以下代碼了嗎?

System.out.println("Hello World!");

System.out 中,out后面沒有小括號,說明out是變量名。

另外System是一個類名,直接使用類名System.out,說明out是一個靜態(tài)變量。

System.out 返回一個對象,然后采用“對象.”的方式訪問println()方法。

我們研究了一下Object類當中有很多方法,大部分看不懂,其中有一個叫做toString()

的,我們進行了測試,發(fā)現(xiàn):

System.out.println(引用);

當直接輸出一個“引用”的時候,println()方法會先自動調(diào)用“引用.toString()”,然后

輸出toString()方法的執(zhí)行結(jié)果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容