【发布时间】:2018-02-21 13:55:59
【问题描述】:
在 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!!");
}
}
【问题讨论】:
-
显示一些代码。你做错了什么,或者你的问题不够清楚。 始终包含您的代码。
-
你应该提供一个例子
-
要覆盖一个方法,
override关键字是强制性的,而不是virtual。 -
不同的是,如果省略 virtual 关键字,则隐藏方法,而不是覆盖它。
-
@Crowcoder -- 编译器错误
标签: c# polymorphism virtual-functions