民间
我很惊讶地看到我的代码工作,我在抽象类中没有任何抽象方法。但按照规则,我们应该至少有一种抽象方法吗? :S
答案 0 :(得分:11)
不,你在抽象类中不需要抽象方法。
限制是:
不要求抽象类必须具有抽象方法。
答案 1 :(得分:5)
不,这完全有效。实际上,C#中的每个static
类实际上都是.NET中的抽象和密封类。 (你不能声明一个抽象类用C#源代码密封。)
C#4规范在第10.1.1.1节(抽象类)中明确地调用了它:
允许(但不要求)抽象类包含抽象成员。
拥有一个没有抽象成员的抽象类肯定是罕见,但这并不是闻所未闻。 (不要忘记它不仅仅是抽象的方法 - 你也可以有抽象的事件和属性。)
答案 2 :(得分:5)
来自MSDN - abstract(强调补充):
抽象类可能包含抽象方法和访问器。
您的抽象类只能包含非抽象方法,或者如果您愿意,它可以是空类。它为您提供了一个无法实例化的基类,这对于plymorphism非常有用。
答案 3 :(得分:2)
您不需要抽象方法来拥有抽象类。有时限制一个类不被实例化,并将其指定为某个继承层次结构的基础是有用的。所有方法都可以在抽象类中定义。