java 繼承體系物件的構造過程

2021-07-06 01:23:51 字數 1666 閱讀 2765

先說一下普通物件的構造過程

比如下面

public

class hello

}

(1)初始化objec的靜態變數,然後呼叫objec的靜態初始化塊

(2)初始化hello的靜態變數,然後呼叫hello的靜態初始化塊

(3)初始化object的例項變數,和例項**。

(4)呼叫object的無參建構函式

(5)初始化hello的例項變數,和例項**。

(6)呼叫hello的無參建構函式

具有顯性繼承的物件

public

class

fther

public

class

sonextends

father

}

(1)初始化父類father的靜態變數,然後呼叫父類father的靜態初始化塊

(2)初始化子類son的靜態變數,然後呼叫子類son的靜態初始化塊

(3)初始化父類fahter的例項變數,和例項**。

(4)呼叫父類father的無參建構函式

(5)初始化子類son的例項變數,和例項**。

(6)呼叫子類son的無參建構函式

但是我這裡強調一些規則。

對於子類,如果沒有建構函式,則會呼叫預設的無參建構函式,預設的無參建構函式會呼叫父類的無參建構函式如果父類沒有建構函式,則會呼叫預設無參建構函式,如果父類沒有提供無參建構函式,則編譯不會通過,提示需要給父類提供無參建構函式

對於子類,如果有建構函式,建構函式中並沒有宣告呼叫父類的建構函式,則會呼叫父類的無參建構函式,其餘同上。

如果子類顯示的呼叫了父類的有參建構函式,則不會呼叫父類的無參建構函式

java物件構造過程

今天碰到了個構造器的問題,在此謹記。如下所示,child類繼承自parent。那麼乙個child物件內部有哪些東西呢?首先他既然是繼承自parent,那麼他必然有parent內部的各個成員。然後他有自己的成員,比如y和member。那麼這些成員是怎麼初始化的?public class child e...

6 1 繼承體系下的物件構造步驟

include pch.h include include include include using namespace std namespace nmsp1 命名空間 virtual a virtual void myvirfunc virtual void myvirfunc2 classb...

java 類的繼承體系

詳細描述見 1 原因1 雖然抽象類b implements c.但是,有可能b中的並沒有真正實現c介面中的方法 因為b是抽象類,抽象類可以不實現介面中的方法,而是直接用 abstract 修飾。如 abstract void method 那麼,由於a extends b,而 a不是抽象類,那麼a就...