0
我有一個具有長鏈繼承的基類。我使用基類的類型在變量中傳遞子類的實例。我可以對子類的實例做一個ToString,並讓孩子的ToString運行(不是父母)嗎?在C語言中使用父類的ToString而不用在C語言中強制轉換
這裏是我的嘗試:
namespace Abc
{
class A
{
string strA = "A";
public virtual string ToString() { return strA; }
}
class B : A
{
string strB = "B";
public virtual string ToString() { return base.ToString() + strB; }
}
class C : B
{
string strC = "C";
public virtual string ToString() { return base.ToString() + strC; }
}
class Program
{
static void Main(string[] args)
{
A a = new C();
System.Console.WriteLine(a.ToString());
System.Console.ReadLine();
}
}
}
這個節目輸出A
。我認爲添加virtual
關鍵字會讓它輸出ABC
。如何在不投射的情況下得到這個結果?在編譯時Casting需要我知道類型。
它已經是虛擬的。你不是說重寫? –