方法重寫:
基類方法標識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)
{……}
}