In C# override modifier is mandatory in derive class for virtual/abstract methods of base class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
我想知道基类是否定义了一些虚方法,那么是否强制在派生类中重写这些方法?同样,如果基类方法是抽象的,我们需要在派生类中实现该方法,但是重写修饰符是必需的吗?如果省略了override修饰符怎么办?
I want to know if the base class has defined some methods virtual,
then is it mandatory to override them in derive class?
号
当然不是。由派生类决定是否重写虚方法。注意,有些类会建议派生类在某些情况下重写特定的虚方法,但编译器不会强制执行该方法。
If the base class method is abstract, we need to implement the method
in derive class, but is override modifier is mandatory?
号
是的,您需要使用
如果你真的运行你的代码,你会看到"形状"打印了两次。这是因为
1 2 |
这将打印"square",因为您正在对正确类型的变量调用方法。
它完全基于问题第一部分中的逻辑,在从形状类派生的方形类中,您声明将隐藏其父虚拟颜色方法的颜色方法,当子类中存在父类时,不需要在子类中复制相同的方法,除非您想隐藏父类的方法。在抽象类中,如果有虚拟方法,则必须在派生类中实现或重写它们,在示例中,这些形状的实例将在形状类中调用虚拟颜色方法。
从您发布的示例代码中可以看到,输出将
1 2 | Shapes Shapes |
号
这是因为,通过省略
另一方面,如果该方法标记为
看看这个链接,它可能有用。
该页中的副本:
To make a method virtual, the virtual modifier has to be used in the
method declaration of the base class. The derived class can then
override the base virtual method by using the override keyword or hide
the virtual method in the base class by using the new keyword. If
neither the override keyword nor the new keyword is specified, the
compiler will issue a warning and the method in the derived class will
hide the method in the base class
号