简单的说 class A { int n = 0; void showMe() { System.out.println("I am A"); } }class B extends A { } //这样叫继承class C { private A a = new A(); private B b = new B(); } //这样叫组合继承,子类拥有父类的属性和方法,也就是B拥有属性n和方法showMe。组合,是把多个类的实例组合在一起形成一个大类,该类除非自己添加属性和方法,否则本身不会拥有任何类的属性和方法,也就是C不拥有属性n和方法showMe(除非自己加),但是可以访问组合成该类的每个实例的可见方法和属性,也就是C里面可以通过a.showMe()来调用A的方法。
继承、组合、聚合这三个概念都是代码复用的体现,差距在于类之间的耦合程度上。 继承关键字是extends,A继承B用英文来表示就是A is a B; 组合和聚合都是在类A中存在类B的引用,其不同点在于: 1.采用组合的方式,需要负责B的对象的生命周期; 2.采用聚合的方式,无需负责B的对象的生命周期 所谓的负责生命周期,就是是否由类A来负责类B的对象的创建和销毁。 就是这样ps:我是菜鸟,欢迎共同学习哦
而组合是可以是几个没有共同属性的类用在一个类中,
class A {
int n = 0;
void showMe() {
System.out.println("I am A");
}
}class B extends A {
} //这样叫继承class C {
private A a = new A();
private B b = new B();
} //这样叫组合继承,子类拥有父类的属性和方法,也就是B拥有属性n和方法showMe。组合,是把多个类的实例组合在一起形成一个大类,该类除非自己添加属性和方法,否则本身不会拥有任何类的属性和方法,也就是C不拥有属性n和方法showMe(除非自己加),但是可以访问组合成该类的每个实例的可见方法和属性,也就是C里面可以通过a.showMe()来调用A的方法。
继承关键字是extends,A继承B用英文来表示就是A is a B;
组合和聚合都是在类A中存在类B的引用,其不同点在于:
1.采用组合的方式,需要负责B的对象的生命周期;
2.采用聚合的方式,无需负责B的对象的生命周期
所谓的负责生命周期,就是是否由类A来负责类B的对象的创建和销毁。
就是这样ps:我是菜鸟,欢迎共同学习哦