先學習方法替換:
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函式不可以用內聯函式定義 虛表 每乙個有虛函式的物件有乙個虛表,虛表中存放著虛函式的入口...