【发布时间】:2012-09-16 20:37:45
【问题描述】:
我想知道在非抽象类(在 C# 中)中限制抽象方法的设计背后的原因。
我知道类实例没有定义,因此它们不能被调用,但是当定义静态方法时,它们也被排除在实例之外。为什么不以这种方式处理抽象方法,有什么具体原因吗?
可以在具体类中允许它们,并且可以强制派生类实现方法,基本上就是在抽象类中的抽象方法的情况下所做的。
【问题讨论】:
-
我希望我不是唯一一个说..“Wut?”
-
您想在非抽象类中定义抽象方法的用例是什么?
-
请添加一个这样的概念有用的类示例。
-
取任何抽象类,比如一个抽象方法和多个具体方法。如果我没有限制,这个抽象类不能去掉还是达到同样的目的吗?
-
如果您对此有信心,也许您可以考虑使用
virtual方法并让它抛出NotImplementedException(或什么都不做,或返回一个默认值)。然后记录继承的类必须实现该方法。但总的来说,我同意其他人的观点;这听起来像是您在尝试使用错误的工具来完成这项工作。
标签: c# oop compiler-construction