五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網 會員登陸 & 注冊

Java零基礎快速入門|繼承

2021-02-18 15:10 作者:動力節(jié)點小王本王  | 我要投稿


本篇文章主要內容

繼承概述

如何繼承

繼承的相關特性

對繼承自Object?類的方法的測試

?難點疑惑

學習目標

了解繼承在java 中有什么作用,以及在代碼上如何實現(xiàn)繼承。

?

知識框架

繼承

繼承概述

繼承是面向對象三大特征之一,封裝居首位,封裝之后形成了獨立體,獨立體 A 和獨立體B?之間可能存在繼承關系。其實程序中的繼承靈感來自于現(xiàn)實生活,在現(xiàn)實生活中繼承處處可見,例如,兒子繼承了父親的財產,兒子不需要努力就很有錢。

生活中的繼承:

現(xiàn)實世界中的繼承

繼承時子類繼承父類的特征和行為,使得子類對象實例具有父類的屬性,或子類從父類繼承方法,使得子類具有與父類相同的行為。兔子和羊屬于食草動物類,獅子和豹屬于食肉動物類。食草動物和食肉動物又是屬于動物類。所以繼承需要符合的關系是:is-aBird is-a Animal),父類更通用,子類更具體。雖然食草動物和食肉動物都是屬于動物,但是兩者的屬性和行為上有差別,所以子類會具有父類的一般特性也會具有自身的特性。

為什么要使用繼承機制?在不同的類中也可能會有共同的特征和動作,可以把這些共同的 特征和動作放在一個類中,讓其它類共享。因此可以定義一個通用類,然后將其擴展為其它多 個特定類,這些特定類繼承通用類中的特征和動作。繼承是 Java 中實現(xiàn)軟件重用的重要手段, 避免重復,易于維護。

?

如何繼承

Java 中繼承的語法格式:

為什么需要繼承,接下來我們用以下這個需求來說明一下:

以上兩個類分別描述了“銀行賬戶類”和“信用賬戶類”,信用賬戶類除了具有銀行賬戶類的特征之外還有自己的特性,按照以上代碼的編寫方式,程序將會非常的臃腫,我們將上面的程序修改為繼承方式,請看代碼:

運行結果如下圖所示:

繼承測試

通過以上的代碼,我們可以看到繼承可以解決代碼臃腫的問題。換句話說,繼承解決了代碼復用的問題(代碼復用就是代碼的重復利用,這是繼承機制最基本的作用。

繼承的作用中除了可以讓代碼復用之外,還有非常重要的兩個作用,那就是有了繼承之后才會衍生出方法的覆蓋和多態(tài)機制。這兩個作用我們在后續(xù)的課程中會詳細講解。目前先理解一下繼承可以做到代碼復用的效果。

?

繼承的相關特性

那么,對于Java 的繼承有哪些特性需要大家理解和記憶呢?我來羅列一下:

B?類繼承A類,則稱?A類為超類(superclass)、父類、基類,B?類則稱為子類(subclass)、派生類、擴展類。

java?中的繼承只支持單繼承,不支持多繼承,C++中支持多繼承,這也是 java?現(xiàn)簡單性的一點,換句話說,java?中不允許這樣寫代碼:class?B?extends?A,C{ ?}。

雖然 java?中不支持多繼承,但有的時候會產生間接繼承的效果,例如:class ?C extends?B,class?B?extends?A,也就是說,C?直接繼承B,其實C?還間接繼承A。

java 中規(guī)定,子類繼承父類,除構造方法和被private?修飾的數據不能繼承外,剩下都可以繼承。

java?中的類沒有顯示的繼承任何類,則默認繼承Object?類,Object?類是java?語言提供的根類(老祖宗類),也就是說,一個對象與生俱來就有Object 類型中所有的特征。

繼承也存在一些缺點,例如:CreditAccount?類繼承 Account?類會導致它們之間的耦合度非常高,Account?類發(fā)生改變之后會馬上影響到CreditAccount?類。


對繼承自Object?類的方法的測試

?接下來我們來測試一下從Object 類中繼承過來的方法,先來看一下Object類的部分源代碼:

12-3Object 類中toString()方法源代碼我們來嘗試調用這個方法,請看代碼以及執(zhí)行結果:

運行結果如下圖所示:

toString()方法執(zhí)行結果

雖然輸出結果看不懂,但是起碼看到這個字符串當中確實是有一個“@”符號的,toString() 方法確實被ExtendsTest 類繼承過來了。

?

難點解惑

對于本章節(jié)內容來說,難點主要是類和類繼承之后的代碼執(zhí)行順序,請看程序:

我們對以上的程序進行分析,子類 H2?繼承 H1,new?H2()執(zhí)行的時候,會先進行類加載, 先加載 H2?的父類 H1,所以 H1?當中的靜態(tài)代碼塊先執(zhí)行,然后再執(zhí)行 H2?中的靜態(tài)代碼塊, 靜態(tài)代碼塊執(zhí)行結束之后,不會馬上執(zhí)行構造方法,代碼塊會先執(zhí)行,Java??中有一條規(guī)則:子類構造方法執(zhí)行前先執(zhí)行父類的構造方法學習 super?之后大家就知道了),所以父類 H1??的代碼塊先執(zhí)行,再執(zhí)行 H1?的構造方法,然后再執(zhí)行 H2?的代碼塊,最后執(zhí)行 H2?的構造方法。我們對以上程序進行編譯并運行,請看下圖結果:

Test 程序的編譯和運行結果

通過以上的測試結果,可以看出以上我們的分析是正確的。


小結

通過本章節(jié)的學習,要求大家理解什么是繼承,為什么要繼承,繼承有什么好處,繼承的特性有哪些。另外要求大家掌握的是繼承的代碼如何實現(xiàn)。還有?Java?中任何一個類的定義都會自帶Object?類的特征,這是因為Object?是所有類的超類。


最后附Java零基礎視頻教程給大家,配合學習效果更佳??!


Java零基礎快速入門|繼承的評論 (共 條)

分享到微博請遵守國家法律
黑河市| 额敏县| 阿拉善右旗| 双鸭山市| 临高县| 名山县| 德保县| 剑川县| 岚皋县| 财经| 泸溪县| 汉沽区| 宝山区| 循化| 达拉特旗| 大名县| 温宿县| 庆元县| 大邑县| 广灵县| 昭通市| 鄄城县| 松潘县| 苏尼特左旗| 永安市| 庆云县| 红桥区| 乌海市| 康定县| 镇远县| 南充市| 洪雅县| 弥渡县| 阳新县| 都昌县| 云安县| 全南县| 东乌珠穆沁旗| 清涧县| 莲花县| 湘潭市|