繼承的概念:繼承就是子類繼承父類的特征和行為;但是兩者的屬性和行為上有差別样悟,所以子類會具有父類的一般特性也會具有自身的特性。
如父類為:動物;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?子類為:食草動物峻厚;子類的子類:牛
類的繼承格式:extends
class 父類 {
}
?class 子類 extends 父類 {
}
為什么需要繼承?
若不用繼承谆焊,定義相似的類的時候代碼臃腫且量大,可維護性差浦夷。
因此需要我們從相似的類中取出相同的部分組成一個父類辖试。使代碼更加簡潔,提高可維護性和復(fù)用性劈狐。
繼承類型
java不支持多繼承罐孝,但支持多重繼承。(子類只能有一個父類)
繼承的特性
子類擁有父類非 private 的屬性肥缔、方法莲兢。
子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展续膳。
子類可以用自己的方式實現(xiàn)父類的方法改艇。(就是重寫方法,詳情見:java高級學(xué)習(xí)之2:重寫與重載)
Java 的繼承是單繼承坟岔,但是可以多重繼承谒兄,單繼承就是一個子類只能繼承一個父類,多重繼承就是社付,例如 A 類繼承 B 類承疲,B 類繼承 C 類,所以按照關(guān)系就是 C 類是 B 類的父類鸥咖,B 類是 A 類的父類燕鸽,這是 Java 繼承區(qū)別于 C++ 繼承的一個特性。
提高了類之間的耦合性(繼承的缺點啼辣,耦合度高就會造成代碼之間的聯(lián)系越緊密啊研,代碼獨立性越差)。
繼承關(guān)鍵字
繼承可以使用 extends 和 implements 這兩個關(guān)鍵字來實現(xiàn)繼承。
extends 關(guān)鍵字:用于繼承類
一個子類只能擁有一個父類悲伶,所以 extends 只能繼承一個類艾恼。
implements 關(guān)鍵字:用于繼承接口
使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)麸锉。
(更多關(guān)于接口的知識詳見:java高級學(xué)習(xí)之6:接口)
super 與 this 關(guān)鍵字
super關(guān)鍵字:我們可以通過super關(guān)鍵字來實現(xiàn)對父類成員的訪問钠绍,用來引用當(dāng)前對象的父類。(super . 方法花沉、super . 變量柳爽、等等)
this關(guān)鍵字:指向自己的引用。(this . 方法 碱屁、this . 變量磷脯、等等)
final關(guān)鍵字:聲明的類不能被繼承
final 關(guān)鍵字聲明類可以把類定義為不能繼承的,即最終類娩脾;或者用于修飾方法赵誓,該方法不能被子類重寫。(更多有關(guān)final關(guān)鍵字的知識柿赊,詳見:java學(xué)習(xí)之13:修飾符)
構(gòu)造器
創(chuàng)建類的時候使用子類的構(gòu)造方法之后會自動調(diào)用父類的構(gòu)造方法俩功。注意參數(shù)要一致。