组合与继承之间选择

来源:互联网 发布:cba数据 编辑:程序博客网 时间:2024/06/05 09:57

        组合和继承都允许在新的类中放置子对象,组合是显示地这样做,而继承则是隐式地做。

        组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形。即,在新类中嵌入某个兑现,让其实现所需的功能,但新类的用户看到的只是为新类所定义的接口,而非所嵌入兑现的接口。为取得此效果,需要在新类中嵌入一个现有类的private对象。

        在继承的时候,使用某个现有类,并开发一个它的特殊版本。通常,这意味着你在使用一个通用类,并为了某种特殊需要而将其特殊化。is-a的关系是用继承来表达的,而has-a的关系是用组合来表达的。是否需要从新类向基类进行向上转型。如果必须向上转型,则继承是必要的;

        为新的类提供方法并不是继承技术中最重要的方面,其最重要的方面是用来表现新类和基类之间的关系。这种关系可以用“新类是现有类的一种类型”加以概括


        使用final方法的两个原因:第一、方法锁定,以防任何继承类修改它的含义,这是出于设计的考虑;想要确保在继承中使方法行为保持不变,并且不会被覆盖。