摘要:遮蔽的應用
昨天早上的回答,誤導了同事,所以今天將昨天研究的結果再解釋一次給同事聽(遮蔽與覆寫),遮蔽與覆寫文章提到,遮蔽並不是一個好方法,這是錯誤的觀念,今天在講解給同事原理時,發現其實遮蔽與覆寫根本就是不同的東西,遮蔽有它的應用面,以下為範例程式。
這邊希望使用子類別參考,可以呼叫父類別方法時,還是顯示父類別的結果,當呼叫到子類別遮蔽的方法時,顯示為子類別遮蔽的方法。
class Program
{
static void Main(string[] args)
{
//使用覆寫,無法產生想要的結果
son son = new son();
son.Son();
son.ImFather();
Console.WriteLine("**************************");
//使用遮蔽,達成呼叫父類別方法時,還是父類別的方法,呼叫遮蔽的方法時,顯示自己的方法
son2 s = new son2();
s.Son();
s.ImFather();
Console.WriteLine("**************************");
}
}
class Father
{
public void ImFather()
{
Console.WriteLine("father");
Son();
}
public virtual void Son()
{
Console.WriteLine("my son name jerry,ken");
}
}
class son : Father
{
public override void Son()
{
Console.WriteLine("my name is jerry");
}
}
class son2 : Father
{
public void Son()
{
Console.WriteLine("My name is ken");
}
}
如文章有錯誤,煩請告知,新人發帖請多包涵