重寫override
用 override 關鍵字重新實現基類中的虛方法virtual
在運行的過程中,無論通過哪個類型的引用,真正對象類型的方法將被調用
隱藏
隱藏是指用 new關鍵字重新實現基類中的方法
在運行的過程中通過引用的類型判斷應該調用哪個類型的方法
父類Parent
public class Parent
{
public void NewMethod()
{
Console.WriteLine($"{nameof(Parent)}.{nameof(NewMethod)}");
}
public virtual void VirtualMethod()
{
Console.WriteLine($"{nameof(Parent)}.{nameof(VirtualMethod)}");
}
private void PrivateMethod()
{
//不可被子類訪問
}
}
子類Child
public class Child: Parent
{
/// <summary>
/// 重寫虛方法
/// </summary>
public override void VirtualMethod()
{
base.VirtualMethod();
Console.WriteLine($"{nameof(Child)}.{nameof(VirtualMethod)}");
}
/// <summary>
/// 隱藏、new關鍵詞重新實現
/// </summary>
public new void NewMethod()
{
//base.NewMethod();
Console.WriteLine($"{nameof(Child)}.{nameof(NewMethod)}");
}
}
重載
重載是指多個方法共享同一個名字並且擁有相同的返回值,但是卻可以擁有不同的參數列表
public void OverloadMethod()
{
Console.WriteLine($"This is OverloadMethod");
}
public void OverloadMethod(string input)
{
Console.WriteLine($"This is OverloadMethod:{input}");
}
public void OverloadMethod(int input)
{
Console.WriteLine($"This is OverloadMethod:{input}");
}
public void OverloadMethod(bool input)
{
Console.WriteLine($"This is OverloadMethod:{input}");
}