在类与对象的世界中,继承与组合是一个很常用的手段。一个类是一种具有共同特征的事物的抽象。而在不同种类的事物之间,又存在着联系,所以类之间也会存在联系。这种联系暂时可以看成是两种,即 “是一个” 联系与 “有一个” 的联系。“是一个”关系的表现形式就是继承,“有一个”的表现形式对应的就是组合。
为了进行理解我们举一个例子。
已知有两个类,一个是 Transportation (交通工具),另一个是 Wheel (轮子)。
class Transportation{
int seat = 0;
void load(){
if(seat<20){
System.out.println("载客数+1");
seat++;
}else{
System.out.println("已经满载");
}
}
}
class Wheel{
void run(){
System.our.println("运动");
}
}
然后接下来我们要写一个新的类 bus 。我们知道:公共汽车是一种交通工具。所以我们选择继承 Transportation 类;公共汽车有车轮,所以我们在bus类中组合一个wheel对象。
class Bus extendsTransportation{
Wheel wheel;
public Bus(){
wheel = new Wheel();
}
}
这样在我们需要一辆公共汽车的时候:
class Main{
public static void main(String[] args){
Bus bus = new Bus();
bus.load();
bus.wheel.run();
}
}
这样我们就能载客然后开始运行了。
在这个例子中,我们选择了让Bus继承了Transportation,组合了Wheel对象。如果让Bus继承Wheel就会显得很奇怪(尽管在操作上是可行的)。在实际的程序编写中,遵循“是一个”和“有一个”原则来合理地使用继承与组合,能够让我们的思路更加清晰,体系更加健全。