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。 –