是否必须在所有子类中实现抽象方法?

时间:2014-04-16 23:42:45

标签: oop

我有一些实现特定方法的子类,在超类中声明为abstract。另外,如果我还有一个不应该实现该特定方法的子类呢?

这就是我对田地的问题。有一个子类只是忽略其超类的某些字段是常见的吗?

这不是关于任何特定技术,只是关于良好的编程实践。

3 个答案:

答案 0 :(得分:1)

可能有讨论各种技术中“强制性”语义的空间,但总的来说,是强制性的。 OO的基本规则之一是,在超类有效的任何地方,子类必须至少作为一种类型有效。如果您以某种方式删除方法或字段(或无法提供它),则违反该规则,因为在super中使用该方法/字段的任何上下文不再有效。可以说,如果你没有填写那些抽象项目,那么你就没有子类。

答案 1 :(得分:1)

除非子类是抽象类,否则必须在子类中实现所有抽象方法。那就是它。

答案 2 :(得分:0)

(C#) 是的,您必须在子类中实现父类或基类的所有方法,除非子类不是抽象类(在上面的评论中提到)。

但是,如果您在基类或父类中有虚拟方法,您可以选择实现(使用 override 关键字)或不实现,这取决于您。