Java現(xiàn)在作為IT開發(fā)的主力開發(fā)語言,在編程界的地位是可想而知的了。繼承作為面對象的三大特征之一,其也是java學習的重要性。繼承這個知識點對于想要學習java的學員來說也是比較難的,今天達內(nèi)科技Java培訓小課堂就來給大家說下什么是java的繼承?特點是什么?
一、概述
繼承描述的是事物之間的所屬關系。例如,兔子屬于食草動物,食草動物屬于動物。它們之間有相同的行為,也有不同的行為,如果分別要進行定義,那些相同的行為還要再次定義會就會顯得麻煩,所以我們把那些相同的行為重新定義到一個新類中,在其它類需要用她的時候在調(diào)用它就好。定義那些共同的行為的類叫做父類,而調(diào)用它們的類叫子類。
可見,父類更通用,子類更具體。我們通過繼承,可以使多種事物之間形成一種關系體系。因此通俗的講,繼承就是子類繼承父類的屬性和行為,使得子類對象可以直接具有與父類相同的屬性、相同的行為。子類可以直接訪問父類中的非私有的屬性和行為。
二、繼承在java中的應用
那么,繼承在java中到底如何運用呢?那就必須借助到extends關鍵字了
發(fā)現(xiàn),咱們并沒有在Studnet類和Teacher類中定義eat方法,但咱們還能正常調(diào)用eat方法,這就是繼承的體現(xiàn)。
繼承的優(yōu)點
1.提高代碼的復用性(減少代碼冗余,相同代碼重復利用)。
2.使類與類之間產(chǎn)生了關系。
三、子類不能繼承的內(nèi)容
并不是父類的所有內(nèi)容都可以給子類繼承的,有一些內(nèi)容是子類無法繼承的。
如:子類不能繼承父類的構造方法,因為構造方法要求和當前類名必須一致;子類可以繼承父類的私有成員,但是不能直接使用,必須間接使用,要提供get set方法。
私有化的成員變量和成員方法是不能被訪問的,只能在本類中調(diào)用,所以子類繼承父類并不是繼承父類中的所有內(nèi)容。
四、繼承特點
只需明確一點,java只支持單繼承,不支持多繼承,但支持多重繼承。
五、繼承后成員變量的特點
Java培訓小課堂在上面的測試類代碼中,僅僅只創(chuàng)建了子類對象,并沒有創(chuàng)建父類對象,但在程序運行中卻使用了父類中的成員變量,這說明在程序中已經(jīng)為父類的成員變量開辟了空間。所以,當子類繼承了父類,在創(chuàng)建子類對象的時候,堆中的子類對象中會劃分出一片空間來保存父類中的成員變量。
Java培訓小課堂上述代碼創(chuàng)建子類對象,給堆中子類和父類中的成員變量分別隱式初始化值后,創(chuàng)建好的對象會去調(diào)用子類的無參構造函數(shù),在執(zhí)行無參構造函數(shù)里面的代碼之前,會先執(zhí)行隱式三步,即調(diào)用父類中的構造函數(shù)super().
Java培訓小課堂說明:super具有幾個作用:
1.super(實參)調(diào)用父類的構造方法
2.super.父類的成員變量:使用父類的成員變量
3.super.父類的成員方法(實參)
六、繼承中成員方法的特點
首先是子類中含有不同名方法的調(diào)用順序,原則是就近原則,子類中沒有而父類中有,執(zhí)行父類中的方法,子類中有父類中也有,執(zhí)行子類中的方法。
七、方法重寫
子類中出現(xiàn)與父類一模一樣的方法時(返回值類型,方法名和參數(shù)列表都相同),會出現(xiàn)覆蓋效果,也稱為重寫或者復寫。聲明不變,重新實現(xiàn)。
構成條件:
1.有繼承
2.子類的方法返回值類型方法名參數(shù)列表(參數(shù)類型)必須一致
3.子類的權限修飾符必須大于等于父類的權限修飾符
代碼示例的話可以參考上面代碼,差別不大。
八、構造器
構造器的名字是與類名一致的。所以子類是無法繼承父類構造方法的。構造器的作用是初始化對象成員變量數(shù)據(jù)的。所以子類的初始化過程中,必須先執(zhí)行父類的初始化動作。子類的構造方法中默認有一個super(),表示調(diào)用父類的構造方法,父類成員變量初始化后,才可以給子類使用。
今天的Java培訓小課堂到此為止,咱們下期再見。