Snu*_*ker 11 java inheritance extends final
在java中,是否有允许扩展非抽象类的情况?
当存在类层次结构时,它似乎总是表示错误的代码.你同意吗,为什么/为什么不呢?
Kon*_*lph 11
我同意Jon和Kent,但是像Scott Myers一样(在Effective C++中),我更进一步.我相信每个班级都应该是abstract,或者final.也就是说,只有任何层次结构中的叶类才真正适合直接实例化.所有其他类(即继承中的内部节点)都是"未完成的",因此应该是abstract.
通常的课程进一步扩展是没有意义的.如果类的一个方面值得扩展和/或修改,那么更简洁的方法是获取一个类并将其分成一个abstract基类和一个具体的可互换实现.
这个问题同样适用于其他平台,例如C#.NET.有些人(包括我自己)认为类型应该是默认的最终/密封,需要明确地启封以允许继承.
通过继承扩展是需要仔细设计的东西,并不像仅仅保留未密封的类型那么简单.因此,我认为应该是允许继承的明确决定.
| 归档时间: |
|
| 查看次数: |
1878 次 |
| 最近记录: |