C 初識虛方法

2021-09-02 23:32:50 字數 933 閱讀 2986

先學習方法替換:

using system;

namespace 方法替換

} public class student : person

} class mainclass }

}

在使用方法替換並且例項化物件的時候定義物件的類是不同的,要麼是子類,要麼是父類。

虛方法:

虛方法簡單說就是讓父類中定義的乙個方法(virtual)在子類中能夠重寫(override),雖然是同名方法,凡是在子類中可能發揮的作用就不同,虛方法是實現多型的方式之一。除了虛方法,還可以在父類中定義虛屬性,然後再在子類中重寫虛屬性。

using system;

namespace lesson18_2

} public void a()

//虛方法 virtual

public virtual void b()

} public class b : a

} //在子類中的重名方法之前 加入關鍵字 new 可以進行方法替換

public new void a()

//子類中虛方法的對應物件 override

public override void b ()

}class mainclass }

}

在定義虛方法的時候,都使用父類來定義,但是引用的是父類的物件作為引數。

參考:前面曾經學習了抽象類,那麼抽象類和虛方法的區別:

1.抽象方法必須在抽象類中

2.抽象方法在父類中不能實現

3.抽象方法在非抽象子類中必須實現

參考:c#中多型實現的三種方式:

抽象類、虛方法、介面

一篇總結的好文:

C 虛方法 抽象方法

首先在c 中虛方法的定義 public virtual void virtualmethod 只要在方法名前加上virtual,就宣告了該方法為虛方法,注意宣告為虛方法後再不能加上abstract,static關鍵字宣告 以下是插入乙個例項來說明虛方法與非虛方法的不同 public class a ...

C (筆記)虛方法

1.可在任何方法上新增virtual,例 virtual void play 2.繼承性 一旦基類中為虛函式,子類將不會為非虛函式 3.優缺性 宣告虛方法除了使程式慢一點點以外,沒有任何缺點 因為當我們使用基類的引用或指標呼叫基類中定義的某個函式時,我們並不知道該函式真正的物件是什麼型別 屬於哪個類...

C 之虛方法

virtual的作用 告訴編譯器不要靜態繫結virtual指定的函式,並且做好在執行時做好動態繫結的作用。虛函式宣告只能出現在類定義中的函式原型宣告 在類外定義 內聯函式在編譯的時候是鏈結好的,所以virtual函式不可以用內聯函式定義 虛表 每乙個有虛函式的物件有乙個虛表,虛表中存放著虛函式的入口...