天天看點

Java繼承知識總結

Java中的繼承作為Java面向對象三大特性之一,在知識點上而言,還是很多的。現做出如下總結:

1. 繼承的概念:

繼承在本職上是特殊——一般的關系,即常說的is-a關系。子類繼承父類,表明子類是一種特殊的父類,并且具有父類所不具有的

一些屬性或方法。

2. 繼承中的初始化順序:

從類的結構上而言,其内部可以有如下四種常見形态:屬性(包括類屬性和執行個體屬性)、方法(包括類方法和執行個體方法)、構造器和

初始化塊(包括類的初始化塊和執行個體的初始化塊)。對于繼承中的初始化順序,又具體分為類的初始化和對象的初始化。

類初始化:

在jvm裝載類的準備階段,首先為類的所有類屬性和類初始化塊配置設定記憶體空間。并在類首次初始化階段中為其進行初始化,類屬性和類初始化塊之間

的定義時的順序決定了其初始化的順序。若類存在父類,則首先初始化父類的類屬性和類初始化塊,一直上溯到Object類最先執行。

對象初始化:

在new建立對象時,首先對對象屬性和初始化塊配置設定記憶體,并執行預設初始化。如果存在父類,則先為父類對象屬和初始化塊先配置設定記憶體并執行初始化。

然後執行父類構造器中的初始化程式,接着才開始對子類的對象屬性和初始化塊執行初始化。

注:

1. 在對象初始化階段,屬性和方法均針對子類可以從父類繼承過來的屬性和方法而言,一般而言,都是針對父類中非private而言的。

因為private修飾的為父類所特有的,子類沒有繼承過來,當new子類時,無須為其配置設定空間并執行初始化。當然了,父類的構造器子類也是不繼承過來的,

但構造器另當别論。

2. 類的初始化隻執行一次,當對同一個類new多個對象時,類屬性和類初始化塊隻初始化一次。

3.繼承中的隐藏:

隐藏含義:實際上存在,但是對外不可見。

Java類具有三種通路控制符:private、protected和public,同時當不寫這三個通路控制符時,表現為一種預設的通路控制狀态。是以,一共具有四種通路控制級别。

具體通路控制表現如下:

private修飾的屬性或方法為該類所特有,在任何其他類中都不能直接通路;

default修飾的屬性或方法具有包通路特性,同一個包中的其他類可以通路;

protected修飾的屬性或方法在同一個中的其他類可以通路,同時對于不在同一個包中的子類中也可以通路;

public修飾的屬性或方法外部類中都可以直接通路。

當子類繼承父類,子類可以繼承父類中具有通路控制權限的屬性和方法(一般來說是非private修飾的),對于private修飾的父類所特有的屬性和方法,子類是不繼承過來的。

當子類需要改變繼承過來的方法時,也就是常說的重寫父類的方法。一旦重寫後,父類的此方法對子類來說表現為隐藏。以後子類的對象調用此方法時,都是調用子類重寫後

的方法,但子類對象中想調用父類原來的此方法時,可以通過如下兩種方式:

1.将子類對象類型強制轉化為父類類型,進行調用;

2.通過super調用。

同樣的,如果在子類中定義父類中相同名稱的屬性時,父類屬性在子類中表現為隐藏。

4.繼承中的this和super:

構造器中的this表示目前正在初始化的對象引用,方法中的this表示目前正在調用此方法的對象引用。this具體用法表現在一下幾個方面:

1.當具多個重載的構造器時,且一個構造器需要調用另外一個構造其,在其第一行使用this(param)形式調用,且隻能在第一行;

2.當對象中一個方法需要調用本對象中其他方法時,使用this作為主調,也可以不寫,實際上預設就是this作為主調;

3.當對象屬性和方法中的局部變量名稱相同時,在該方法中需要顯式的使用this作為主調,以表示對象的屬性,若不存在此問題,可以不顯式的寫this。

其實,其牽涉到的一個問題就是變量的查找規則:先局部變量 => 目前類中定義的變量 => 其父類中定義的可以被子類繼承的變量 => 父類...

super表示調用父類中相應的屬性和方法。在方法中,若需要調用父類的方法時,也一定要寫在第一行

5. 繼承與組合:

從單純的實作效果上看,繼承群組合都能達到同樣的目的。并且都是實作代碼複用的有效方式。

但在一般性的概念層次中,兩者具有較為明顯的差别。

繼承表現為一般——特殊的關系,子類是一個特殊的父類,是is-a的關系。父類具有所有子類的一般特性。

組合表現為整體——部分關系,即has-a關系。在組合中,通過将“部分”單獨抽取出來,形成自己的類定義,并且在“整體”

這個類定義中,将部分定義為其中的一個屬性,并通過get和set方法,以此可以調用“部分”類中的屬性和方法。

---------------------------------------------------------------------------------

筆者水準有限,若有錯漏,歡迎指正,如果轉載以及CV操作,請務必注明出處,謝謝!

本文轉自Windstep部落格園部落格,原文連結:http://www.cnblogs.com/lwbqqyumidi/p/3509992.html,如需轉載請自行聯系原作者