java中的组合
概述
我们知道,为了实现类的复用,我们会选择去继承该类,从而可以使用该类的某些方法;除了继承之外,我们也可以通过组合来实现类的复用,只需在该类中
定义一个被复用的类的成员变量,我们便可以使用该类中的东西
//继承
class Animal {
//吃饭
public void eat(){
System.out.println("吃饭");
}
}
class Dog extends Animal{
//喝水
public void drink(){
System.out.println("喝水");
}
}
//组合
class Nose{//鼻子类
public void xiqi(){
System.out.println("鼻子吸气");
}
}
class Person{
private Nose nose;
public void setNose(Nose nose){
this.nose=nose;
}
public void eat(){
System.out.println("吃饭");
}
}
继承和组合的区别
- 继承体现的是
is a
的关系,比如说:狗是动物 - 组合体现的是
has a
关系,比如说:人有鼻子