可能重复:
why do we need the new keyword and why is the default behavior to hide and not override?父类和子类中的方法名称相同吗?
我有一个家长和一个子类。两者都有一个名称相同的方法,编译器允许它。我无法理解它。为什么编译器没有在子类中显示错误,如果父类具有相同名称的方法。我没有使用新的虚拟或覆盖方法。请帮助我理解为什么编译器没有在子类中显示错误?
class BaseClass
{
public virtual string SayHi()
{
return ("Hi");
}
}
class DerivedClass : BaseClass
{
public override string SayHi()
{
return (base.SayHi() + " from derived");
}
}
如果基本方法不是虚拟的,你会真正得到一个编译器警告信息,告诉声明:
class BaseClass
{
public string SayHi()
{
return ("Hi");
}
}
class DerivedClass : BaseClass
{
public string SayHi()
{
return (base.SayHi() + " from derived");
}
}
很确定您会收到警告。 – CodesInChaos