继承与组合
目录
- 1、继承与组合
- 2、实例
- 3、继承 VS 组合
1、继承与组合
- 继承的详细知识可参考博客
类和对象—继承 - 和继承类似,组合也是一种表达类之间关系的方式,也可以使代码得到重用。
- 组合并没有特殊的语法,只是将一个类的对象作为另一个类的字段。
- 继承表示对象之间是 is-a 的关系;而组合表示对象之间是 has-a 的关系。比如说狗是一个动物,而汽车有一个发动机。
- 由于继承使得代码的耦合性很高,因此一般建议能用组合就用组合。
2、实例
用汽车举个例子:汽车有轮胎、发动机和车载系统,因此轮胎、发动机、车载系统和汽车之间的关系是组合;而宝马是一个车,因此宝马和车之间的关系是继承。
// 轮胎类
public class Tire {
}
// 发动机类
public class Engine {
}
// 车载系统类
public class VehicleSystem {
}
// 车类
public class Car {
// Tire Engine VehicleSystem 和 Car 类之间的关系就是组合
protected Tire t;
protected Engine e;
protected VehicleSystem vs;
}
// 宝马车类
public class BMW extends Car {
// 宝马是一个车,因此 BMW 和 Car 之间的关系是继承关系
}