Java 繼承情況下例項變數的初始化

2021-08-29 17:34:08 字數 478 閱讀 4281

package scjp;

class x }

class y }

public class demo65 extends x

public static void main(string args) }

執行結果:yxyz

分析:1. new demo65();

1.2. demo65的超類是x,所以 new x()

1.2.1 x沒有超類所以直接例項化x成員變數 y y=new y() console列印 y

1.2.2 然後執行x的建構函式 cosole列印x

1.3 例項化demo65的成員變數 y y=new y() cosole 列印 y

1.4 執行建構函式 列印 y

總結: 例項化乙個類首先例項化它繼承的類,然後初始化它的變數,然後執行建構函式內容.

繼承情況下的類作用域

建構函式和析構函式中的虛函式,構造和析構也是分階段的,也就是說從無到基類物件,再到派生類物件,從派生類物件到基類物件,再到無。這中間有乙個狀態就是基類物件,此時直接或間接呼叫虛函式,只能是基類中的版本,因為後邊的還沒形成呢。因為如果使用派生類中的版本,可能需要訪問派生類物件的成員,而這些還不存在,為...

繼承情況下類的作用域

在繼承情況下,派生類的作用域巢狀在基類作用域中。因此,如果不能在派生類作用域中確定的名字,就在外圍基類作用域中查詢該名字的定義。在基類和派生類中使用同一名字的成員函式,其行為與資料成員一樣 在派生類作用域中派生類成員將遮蔽基類成員。即使函式原型不同,基類成員也會被遮蔽。如果要訪問被遮蔽的基類成員,需...

C 中繼承情況下的類作用域

首先,每乙個類都保持著自己的作用域,在該作用域中定義了成員的名字。物件 引用或指標的靜態型別決定了物件能夠完成的行為 c primer 這裡能夠完成的行為,應該說是能夠使用的變數名 資料和方法 這些變數名是定義在呼叫它的物件 引用或指標的靜態型別中的。為什麼將行為改為變數名,是因為我覺得行為是處理事...