方法重寫:
基類別方法標識virtual關鍵字,子類別(繼承類別)中方法重寫標識override關鍵字。
重寫的方法必須跟基底類別的類型相同,例如方法名稱、傳回和接受參數。
public class Class1 { public virtual void show(int i) {……} } public class Class2:Class1 { public override void show(int a) {……} }
New方法重寫:
public class Class1 { protected virtual void show(int i) {……} } public class Class2:Class1 { public new int show(int a) {……} }
new聲明定義自己的同名方法。傳回類型、存取類型可以不同於基底類別的同名方法。
如果接受參數不同於基底類別同名方法時new關鍵字會多餘,相當於一般重寫(基底類別沒有一樣的方法,沒有一樣的隱藏方法)。
override重寫基底類別方法(隱藏方法)的方法體,new重寫基底類別同名方法(接收參數一樣)。
終止繼承:
終止繼承識別sealed。下列程式碼編譯出錯,Class2無法繼承封閉類別Class1
public sealed class Class1 { public virtual void show(int i) {……} } //public class Class2:Class1 //{ // public override void show(int a) // {……} //}
呼叫基底類別建構函數:
編譯器先呼叫基底類別建構函數,然後呼叫繼承類別建構子。
public class Class1 { public Class1(int i , string j) {……} } public class Class2:Class1 { public Class2(int i,string j,object obj):base(i,j) {……} }
以上就是C#拾遺之小知識(四):繼承的內容,更多相關內容請關注PHP中文網(www.php.cn)!