理解
类的组合就是在一个类中把其他的类当作自身的成员属性来使用。与继承的区别为:组合是一种 has的关系(Computer和Cpu的关系),继承是一种is的关系(Animal和Dog的关系)
代码示例为:
private Cpu cpu= new Cpu();
private Memory memory=new Memory();
private Keyboard keyboard=new Keyboard();
作用
提高类的灵活性,能用组合的情况下尽量用,少用继承,因为Java中的继承为单继承,局限性较大。
灵活性的体现
public class Cpu {
public void calculate(){
System.out.println("Cpu进行计算");
}
}
public class IntelCPU extends Cpu{
@Override
public void calculate() {
System.out.println("INTELCPU开始工作");
}
}
public class AMDCpu extends Cpu{
@Override
public void calculate() {
System.out.println("AMDCPU开始工作");
}
}
这时就可以在其他的类中定义setCpu的方法,来实现Cpu的灵活更换。
public class Computer {
private Cpu cpu= new Cpu();
private Memory memory=new Memory();
private Keyboard keyboard=new Keyboard();
public void work(){
cpu.calculate();
memory.store();
keyboard.input();
}
public void setCpu(Cpu cpu){
this.cpu=cpu;
}
public static void main(String[] args) {
Computer computer=new Computer();
Cpu cpu=new IntelCPU();
computer.setCpu(cpu);
computer.work();
}
}