一、继承和组合的区别
类的组合和继承一样,都是面向对象中代码复用的方式,是软件重用的重要方式。组合和继承都是有效地利用已有类的资源。
继承
- 继承是面向对象三大基本特征之一(继承,封装,多态),继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
- 继承强调的是is-a关系。
- 在继承中,父类的方法内部实现细节对子类可见,是白盒式复用。
- 继承在编码过程中就要指定具体的父类,其关系在编译期就确定
组合
- 组合是通过对现有对象进行拼装即组合产生新的具有更复杂的功能
- 组合体现的是整体和部分,强调的是has-a的关系。
- 组合中,对象之间的内部细节不可见,其代码属于黑盒式复用。
- 组合的关系一般在运行时确定
二、多继承有什么优点缺点
优点:
多继承,可以调用多个基类的不同方法
缺点:
多继承的类,如果调用基类的基类中的方法,容易造成歧义
三、继承
不使用继承:
使用继承: