基礎知識總結:關於繼承

如果要在子類中調用父類的方法可以用super關鍵字來調用,與super對應的this,它們之間並不是對應關係,首先super是個關鍵字,通過這個關鍵字表示調用的是父類的屬性或者方法,而this是表示一個真正的對象,this可以當做參數進行傳遞,可當做返回值。所以千萬不要搞混。

靜態綁定和動態綁定的區別:

Son extends Father  子類對象son ,把子類對象賦值給父類  (Father)son,再用son調用父類的靜態成員或靜態方法,這叫做靜態綁定。如果son不賦值給Father,而son還是自己的Son類的對象,調用與父類同名的靜態成員或靜態方法,調用的就是子類的靜態成員和靜態方法,所以當這個對象是父類的對象調用的就是父類的靜態方法,這個對象是子類的對象,調用子類的靜態方法。一般不要這樣用,靜態變量應該用類名直接調用。

動態綁定只要只重載和重寫,子類對象如何決定調用的是父類還是自己的變量和方法,是根據參數類型進行比對,選擇合適的方法進行調用調用。

一個父類的變量,能不能轉換爲一個子類的變量,取決於這個父類變量的動態類型(即引用的對象類型)是不是這個子類或這個子類的子類。

子類方法不能降低父類方法的可見性,是指如果父類是protected,子類可以是protected,也可以是public,指的是子類可以升級父類可見性但不能降低。

如果父類得方法不希望被子類繼承,可以用final關鍵字修飾。

子類對象實例化的過程是這樣的:

第一步,類初始化,父類靜態代碼塊

第二步,類初始化,子類靜態代碼塊

第三步,實例初始化,父類實例代碼塊

第四部,實例初始化,子類示例代碼塊

第一二步在內存村中分配類的信息,給類種的變量賦默認值,然後再執行初始化對象的內存分配。

內存分配的表現形式:

內存分爲棧和堆,棧中存放函數的局部變量的地址該地址指向堆中該對象的真正存儲區域,堆中存放對象信息。還有個方法區專門放類的信息。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章