C 中呼叫父類的構造方法和成員

2021-09-08 00:21:29 字數 1078 閱讀 2946

c#中使用的關鍵字是base,但用法不完全相同。

1. 呼叫父類的構造方法

// 父類

public class father

private string name;

} // 子類

public class son:father }

注意:如果沒有第14行「:base(name)」,編譯器將報告錯誤:「father」不包含採用「0」引數的建構函式。因為預設隱式呼叫

父類不帶引數的構造方法,而father類沒有不帶引數的構造方法。所以此時需要像第14行那樣顯示呼叫父類構造方法。

2. 呼叫父類的成員

// 父類

public class father

.",name);

} }

// 子類

public class son:father

",base.name);

console.writeline("my name is .", name); } }

如果不加第13行和第14行的關鍵字new,編譯器將產生2個警告,但不影響程式的執行。因為子類隱藏了父類的成員。

如果第4行和第13行的name成員是private,會少產生乙個警告。

3. 子類的子類呼叫父類中的隱藏成員

一般情況,在呼叫父類成員時子2代和子1代沒什麼區別。但如果子1代隱藏父類成員,情況就會不同。

像上面的情況,son隱藏了父類的成員變數name和成員方法tellname(),如果再有乙個類grandson繼承son,那grandson呼叫

father類中被隱藏的成員時要像這樣:

// 子類的子類

public class grandson : son

", f.name);

console.writeline("my father's name is ", base.name);

console.writeline("my name is .", name); } }

也可以使用強制轉換,第8行不要,第9行的「f.name」換成「((father)this).name」。但是不能使用base進行強制轉換。

呼叫父類的構造方法

public class newgou 形式引數的問題 引用型別 形式引數的改變直接影響實際引數的改變 基本型別 形式引數的改變不影響實際引數的改變 如果你看了乙個方法裡的形式引數是乙個類 型別 引用型別 這裡其實需要的是該類的物件.形式引數是引用型別.呼叫的時候,把main方法中的a位址傳遞到了這...

C 中了類繼承和呼叫父類的建構函式方法

構造方法用來初始化類的物件,與父類的其它成員不同,它不能被子類繼承 子類可以繼承父類所有的成員變數和成員方法,但不繼承父類的構造方法 因此,在建立子類物件時,為了初始化從父類繼承來的資料成員,系統需要呼叫其父類的構造方法。如果沒有顯式的建構函式,編譯器會給乙個預設的建構函式,並且該預設的建構函式僅僅...

子類繼承和呼叫父類的構造方法

1.如果子類沒有定義構造方法,則呼叫父類的無引數的構造方法,2.如果子類定義了構造方法,不論是無引數還是帶引數,在建立子類的物件的時候,首先執行父類無引數的構造方法,然後執行自己的構造方法。3.如果子類呼叫父類帶引數的構造方法,可以通過super 引數 呼叫所需要的父類的構造方法,切該語句做為子類構...