Java中super有什么用,什么时候用他,什么时候extends Frame(JFrame)
复合优与继承,所以不用继承。
/FLEX/thread-2978-1-1.aspx)。那时候我给它们分别起了个非常具有比喻意味的别名——改装 和 组装。是以汽车为例的,比如我们要给一辆量产车上加上一个大号的尾翼(最近由于飞车党撞人事件,网络上都在声讨非法改装,与本例无关,我这里只是举个例子,最终要说明的还是编程技术问题),我们可以理解为以原来的车为基础,在基础之上为了扩展更能而加装了尾翼;另一种思维方式,我们也可以理解为我们是在“制造”一辆赛车,用了两个“零件”,一个是一辆量产车,另一个是赛车尾翼。
这两种“思路”反应在程序上,就是 继承 与 复合 的关系。按照本条的“精神”,如果可以用复合实现,那么就该优先使用复合,而不是继承。从自造Flex控件的工程中,我的一点体会来看,我感觉Flex的控件既不是转为继承而设计的(那些控件的超类除外),也并不明确禁止你去扩展。而在实际中确实发现,如果你不能完全读懂并驾驭原控件的源码,并能很好的改写所有你该改写的方法,那么使用继承确实是一件很危险的事情。比如我就遇到了无法扩展原控件的显示区域的问题。稳妥的办法就是使用复合,当然也会带来一些小麻烦,就如同本条中例子(书第65页)一样也会遇到这样的事情,就是如果你想将原控件(“超类”,例中的HashSet)中的公有成员依然暴露出来的话,就必须逐一为它们写getter方法。