2
OOP中討論的特性/主題之一是虛擬成員。我期待在一份聲明如下:運行時類型的虛擬成員調度
虛擬成員運行時類型派遣
這是否意味着虛擬方法依賴於對象類型(S)的被接受或處理,而變量類型?
任何更正或評論將不勝感激。
感謝, 阿米特
OOP中討論的特性/主題之一是虛擬成員。我期待在一份聲明如下:運行時類型的虛擬成員調度
虛擬成員運行時類型派遣
這是否意味着虛擬方法依賴於對象類型(S)的被接受或處理,而變量類型?
任何更正或評論將不勝感激。
感謝, 阿米特
號它無關,該方法接受那些應爲每個執行相同的參數。這意味着虛擬方法將在運行時根據調用方法的類型來解析。試想一下:
public class Parent
{
public virtual string SayHi()
{
return "Hi!";
}
}
public class NiceChild : Parent
{
public override string SayHi()
{
return "Hello World!";
}
}
public class MeanChild : Parent
{
public override string SayHi()
{
return "You suck!";
}
}
現在,我們有一個方法:
public void PrintHi(Parent instance)
{
Console.WriteLine(instance.SayHi());
}
你可以調用該方法的三種方式之一,但不知道結果如何,直到運行時,如果你看到的一切都是上面的方法:
PrintHi(new Parent()); // Hi
PrintHi(new NiceChild()); // Hello World!
PrintHi(new MeanChild()); // You suck!
很好的解釋!謝謝Justin。 –