c怎麼重寫基類的建構函式和虛擬方法

2022-03-06 10:40:34 字數 2877 閱讀 9845

1樓:陽光的雷咩咩

建構函式沒聽說過重寫的,但是有類似繼承的

public subclass(int x):base(x)重寫虛方法直接

public override void f()

2樓:哇塞一一有灰機

c#基類的建構函式和虛擬方法的重寫都是在原有的基礎上新增新的方法或者函式,改變引數的個數或者方法的屬性或欄位

c#中基類方法沒有virtual ,可以被重寫嗎

3樓:

抽象也可以,不然不能被重寫,但可以用new關鍵字,讓它變成另一個方法。

4樓:微軟專家張海

不能重寫非虛方法或靜態方法。重寫的基方法必須是 virtual、abstract 或 override 的。

c#中父類的虛方法可不可以被子類的子類重寫?

5樓:

1、 如果父類方法沒有加virtual關鍵字,即不是一個虛方法,則在子類中只能隱藏基類方法

(new),而不能覆蓋(override)。

2、如果父類方法加了virtual關鍵字,即它是一個虛方法,在子類中一樣可以隱藏(new)。

3、如果子類實現了父類相同的方法(相同的方法名稱及簽名),而沒有new,在編譯時會報警,但

編譯仍然能夠通過!

4、呼叫父類方法:base.方法名()

5、abstract類是一個抽象類,不能被例項化,只能繼承

6、最後講講過載(overload):是在同一個類中的兩個或兩個以上的方法,擁有相同的方法

名,函式型別也相同,但是引數卻不相同,最常見的過載的例子就是類的建構函式。

6樓:匿名使用者

完全可以被子類重寫,不過要用關鍵字override。如果a裡有虛方法,b是繼承a的,那麼c也可以實現a裡面的虛方法。c繼承b當然可以訪問b類裡面的成員了

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

7樓:四舍**入

class a

class b : a

8樓:

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

一般情況,在呼叫父類成員時子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()中只需指定變數名即可,引數的型別必須和父類中的一致

9樓:匿名使用者

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();

10樓:匿名使用者

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

class a

}class b : a}

11樓:匿名使用者

class a

}class b : a}

12樓:匿名使用者

public a()

c中如何呼叫基類的虛擬函式,c 中 解構函式中可以呼叫虛擬函式麼

下面是例子 include using namespace std class a a virtual void f 一個類的物件中是沒有關於普通成員函式的指標的slot,只有成員變數還有虛表指標,類的成員函式的 定義在pe檔案的 區,所以從程式載入時,就已經分配好了記憶體用於存放這些 執行時所需要...

c基類中的成員函式的引數是派生類怎麼辦

先宣告派生類,將成員函式引數設為派生類的引用 include using namespace std class b class a int main 不知道你是不是要問這個 那還放在基類搞什麼,不如弄成虛擬函式。c 中派生類如何使用基類中的資料成員 如果你是派生類例項,這個結果是正確的,派生後會覆...

虛擬函式和虛基類的區別是什麼啊,c 中虛擬函式與純虛擬函式的區別是什麼?

虛擬函式 虛基類,它們都和virtual有關,這兩個帶有虛字的定義容易使人混淆,回下面先從作用答 上來解釋這兩個定義的區別 1.虛擬函式是用於多型中virtual修飾父類函式,確保父類指標呼叫子類物件時,執行子類函式的。2 虛基類是用來在多繼承中,如果父類繼承自同一個父類,就只例項化一個父類 說的有...