我有一个基类,我想为所有继承类的方法提供一些“基础”功能。
在我想要做的继承课程中:
public override void Setup()
{
base.Setup();
}
但目前它说我必须使用新关键字。
如何使用,所以我必须使用override
关键字?
目前使用new
关键字并使用override
与我之间有何不同?
答案 0 :(得分:7)
它是这样说的,因为你没有声明基本方法virtual
。完成此操作后,基本virtual
/派生override
对关键字将有意义。目前,编译器抱怨您不能override
使用非virtual
方法。
答案 1 :(得分:4)
当您使用override关键字时,即使将实例作为基类类型传递,也会使用派生方法。因此,基类中需要有一个虚拟,以便程序知道它必须对实例的实际类型进行运行时检查。然后它查找实际类型是什么,如果它是派生类型,它会检查它们是否是基类中该特定方法的派生类中的覆盖。
会员隐藏是不同的。只有在实际作为派生类的实例传递时,才会隐藏基本成员。如果对象作为基类传递,则仍将使用基类方法。如果您隐藏了某个成员,则在未使用该新关键字时会收到警告。新关键字只是告诉编译器,你真的应该隐藏基类型方法。