新的和覆盖之间的区别?

我有一个基类,我想为所有inheritance类的方法提供一些“基础”function。

在我想inheritance的inheritance类中:

public override void Setup() { base.Setup(); } 

但目前它说我必须使用new关键字。

我怎么拥有它所以我必须使用override关键字?

目前我使用new关键字和使用override有什么区别吗?

它是这样说的,因为你没有声明基本方法是virtual 。 执行此操作后,基本virtual /派生override关键字对将有意义。 现在,编译器抱怨你不能overridevirtual方法。

使用override关键字时,即使实例作为基类类型传递,也会使用派生方法。 因此,基类中需要有一个虚拟,以便程序知道它必须对实例的实际类型进行运行时检查。 然后它查找实际类型是什么,如果它是派生类型,它检查它们是否是基类中该特定方法的派生类中的覆盖。

会员隐藏是不同的。 只有在实际作为派生类的实例传递时,才会隐藏基本成员。 如果对象作为基类传递,则仍将使用基类方法。 如果您隐藏某个成员,则在未使用该新关键字时会收到警告。 new关键字只是告诉编译器,你真的是要隐藏基类型方法。