C#中重寫、重載和隱藏的概念


重寫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}");
}

示例代碼

OverrideNewAndVirtual


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM