在Java中,是否曾经有过允许非抽象类扩展的情况?

当存在类层次结构时,它总是似乎指示错误的代码。您是否同意,为什么/为什么不呢?

最佳答案

我同意乔恩(Jon)和肯特(Kent)的观点,但是像斯科特·迈尔斯(Scott Myers)(在有效C++中)一样,我走得更远。我相信每个类都应该是abstractfinal。也就是说,只有任何层次结构中的叶类才真正适合直接实例化。所有其他类(即继承中的内部节点)均为“未完成”,因此应为abstract

进一步扩展常规类完全没有意义。如果该类的某个方面值得扩展和/或修改,则更干净的方法是采用该类并将其分为一个abstract基类和一个具体的可互换实现。

09-26 22:27
查看更多