Java 现实生活中的合成实例

Java 现实生活中的合成实例,java,inheritance,design-patterns,composition,Java,Inheritance,Design Patterns,Composition,我试图理解“偏爱复合而非继承”这句话 有人能给我一个现实生活中的例子,为什么组合比继承更好 还有,如果有任何缺点?继承是指一个类是另一个类的类型,并且共享同一类型的其他类的基本功能和属性 e、 gVehicle->Car。 车辆可能具有重量或最高速度等属性(组成),所有继承自车辆的等级将共享这些属性 组合是类属性的特定组合,例如Car->int numDoors。方法也表示组合,但在继承的情况下通常使用重写的子类实现。例如,Vehicle的drive方法可能具有与耗油量相关的通用实现,而Car可

我试图理解“偏爱复合而非继承”这句话

有人能给我一个现实生活中的例子,为什么组合比继承更好


还有,如果有任何缺点?

继承是指一个类是另一个类的类型,并且共享同一类型的其他类的基本功能和属性

e、 g
Vehicle->Car
。 车辆可能具有
重量
最高速度
等属性(组成),所有继承自车辆的等级将共享这些属性

组合是类属性的特定组合,例如
Car->int numDoors
。方法也表示组合,但在继承的情况下通常使用重写的子类实现。例如,
Vehicle
drive
方法可能具有与耗油量相关的通用实现,而
Car
可能通过首先调用
Vehicle
的基本方法(
super.drive()
)来覆盖该方法,然后进一步指定其自身的特定过程

另见