组合与继承有什么共同点和差异?通过组合生成的类与被组合的类之间的逻辑关系是什么?继承呢?
组合与继承的?共同点:
都是能够使用已经封装好的类。
组合与继承的差异:
通过组合生成的类一旦消失,被组合生成的类也不会存在,而派生类一旦消失,基类仍然存在;通过组合生成的类与被组合的类之间,一般被组合的类会作为通过组合生成的类的私有成员存在,通过组合生成的类包含被组合生成的类的全部数据,但本身并不包含被组合的类的公有接口,最普遍的公有继承一般能继承基类的全部数据和接口。
继承:
最普遍的继承的公有继承的派生类与基类的关系is a,即派生类是基类的具体化,派生类与基类是特殊与一般的关系。
组合:
通过组合生成的类与被组合的类之间的关系是has a,即它们之间是包含与被包含的关系。