在C#中,为什么即使我们在派生类中重新定义的基类方法中忘记了关键字“Virtual”,也没有编译错误。
我了解到这个关键字必须覆盖方法
是不是 ?
public class Mother
{
public void Speak()
{
Console.WriteLine("Mother !");
}
}
public class Son : Mother
{
public void Speak()
{
Console.WriteLine("Son!!");
}
}
应该是:
public class Mother
{
public virtual void Speak()
{
Console.WriteLine("Mother !");
}
}
public class Son : Mother
{
public override void Speak()
{
Console.WriteLine("Son!!");
}
}
答案 0 :(得分:-1)
基本上,Virtual和Override适用于动态绑定。动态绑定将在运行时决定。编译器不知道哪个虚方法将在派生类中重写。这就是为什么它没有给你一个错误。这将在运行时决定。哪个派生类将在运行时使用。