【发布时间】:2012-07-18 06:17:26
【问题描述】:
在 C# 中,override 默认是启用的,那么是否不需要在基类中显式声明一个方法为可重写的?如果是这样
- Overridable 是仅限于 VB.NET 还是在 C# 中也是必需的?
- 因此可以覆盖哪些类型的方法?它只是抽象类的抽象方法还是任何方法?
【问题讨论】:
-
标记为
virtual的方法可以用override关键字覆盖。覆盖方法仍然是虚拟的(尽管您不要重复virtual关键字)并且可以再次覆盖。要阻止该方法被进一步覆盖,请使用sealed关键字。 -
正如下面其他人提到的,在C#中,如果以Abstract关键字为前缀,则默认情况下所有抽象方法都是虚拟的。这意味着方法签名只存在于抽象类中,但方法实现写在别处?
-
正确。试试吧。首先编写一个类并标记类摘要。然后引入一个抽象方法,例如
public abstract int GetNumber();如果你再写一个派生自第一个类的非抽象类,编译器会强制你提供一个GetNumber()的实现。 -
另一个抽象类可以继承另一个抽象类吗?
-
是的,当然。抽象类也可以继承非抽象类。