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.如果拋異常標識構造失敗,那麼,所有...