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