c中子類建構函式中如何呼叫父類建構函式

時間 2021-05-14 10:06:50

1樓:四捨**入

class a

class b : a

2樓:

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

一般情況,在呼叫父類成員時子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進行強制轉換。

2.  c#中base關鍵字-呼叫父類成員

c#中base關鍵字在繼承中起到非常重要的作用。它與this關鍵字相比,this關鍵字代表當前例項。base關鍵字代表父類,使用base關鍵字可以呼叫父類的建構函式、屬性和方法。

使用base關鍵字呼叫父類建構函式的語法如下:

子類建構函式:base(引數列表)

使用base關鍵字呼叫父類方法的語法如下:

base.父類方法();

using system ;

class teacher//老師類

public teacher(string str)//建構函式2

public void output()//自定義方法

private string name;

public string name//屬性

set}

public void getname()

}class jack:teacher

public void myoutput()//自定義函式

public string myname//自定義屬性

set}

}class test

}3. 注意:base()呼叫父類建構函式時,不需要再次指定引數的型別,因為在子類中已經定義了這些引數,在base()中只需指定變數名即可,引數的型別必須和父類中的一致

3樓:匿名使用者

public class a

public override string tostring()}public class b:a

public new string tostring()} 呼叫b b = new b(1, 2, 3, 4);

console.writeline(b.tostring());

console.readline();

a a = b;

console.writeline(a.tostring());

console.readline();

4樓:匿名使用者

通過base 來用,在子類中,你呼叫的型別要和父類的呼叫型別相同才行,不然會出錯

class a

}class b : a}

5樓:匿名使用者

class a

}class b : a}

6樓:匿名使用者

public a()

c#子類繼承父類,在呼叫子類的建構函式的時候首先會呼叫父類的建構函式

7樓:匿名使用者

回答者: jeogegxs說的對

子類一定會呼叫父類的構造函

補充一點:

類可以有多個建構函式.

在子類呼叫建構函式後加:base(引數...)可以呼叫指定函式如果不寫,會預設呼叫父類無參的建構函式

8樓:匿名使用者

執行子類建構函式不可能不執行父類的建構函式。

當你例項化乙個子類物件時,他會先執行system.object中的建構函式,然後再執行父類的建構函式,最後執行子類的建構函式。

要不執行父類的某個建構函式,只有你在子類中過載乙個新的建構函式。

9樓:

給父類增加一沒用的建構函式

public class parent

public parent(int i){}}public class child:parent}

10樓:gis冰淚兒

不可能不呼叫父類的建構函式,建構函式是先呼叫父類的也就是基類的,即由內而外呼叫。析構函式是先呼叫子類的析構函式再一次呼叫父類的析構函式,即由外向內

11樓:匿名使用者

試試覆蓋父類的建構函式。

關於C 子類建構函式的過載問題

因為你的基類student裡定義了建構函式,基類的預設建構函式不能呼叫。繼承類裡也就不可能使用預設建構函式了。把你基類裡的建構函式改為有預設值的建構函式,就能解決你的問題。如下 include stdafx.h include include using namespace std class st...

C 中的建構函式問題,c 建構函式的問題

建構函式一般用來對類中的資料成員進行初始化工作,但並不是要對全部資料初始化,你只需要選擇自己需要的資料進行賦值即可。其實這一點從預設的建構函式也能看出來 當你沒有顯示的寫乙個建構函式的時候,編譯器會為你提供乙個預設的建構函式,它沒有引數,只有乙個空語句,也就是說它沒有對任何資料成員進行初始化。由於構...

c當建構函式失敗時建構函式內部怎麼處理

w別y雲j間 1 建構函式想通知外部自己構造失敗,只有拋異常這一個途徑 沒有返回值 2 如果不拋異常,那麼建構函式執行完畢,從語言層面上編譯器認為該物件是正確構造了的,其實構造沒有按預想的進行,所以需要用狀態變數 建構函式引用引數就可以讓外界可以知道構造失敗了。3.如果拋異常標識構造失敗,那麼,所有...