java组合与继承
2017-04-08 18:10
260 查看
在网上查了一些关于组合的文章,全都说到树,说实话真没理解。
谈一谈自己的理解:
继承应该比较容易理解,但是为何会与组合扯上关系。这是一个问题。
继承就是子类可以得到父类的东西而已,B继承A,那么B就有了A的属性及方法,那么组合又是什么鬼?
B不继承A,也想得到A的属性和方法,那怎么实现呢?说到这里,其实就很简单了,B中含有A的引用,不就可以在B中调用A的方法了吗。
在此基础上,如果两者再同时实现接口C
这样B就实现了A的静态代理了。
谈一谈自己的理解:
继承应该比较容易理解,但是为何会与组合扯上关系。这是一个问题。
继承就是子类可以得到父类的东西而已,B继承A,那么B就有了A的属性及方法,那么组合又是什么鬼?
B不继承A,也想得到A的属性和方法,那怎么实现呢?说到这里,其实就很简单了,B中含有A的引用,不就可以在B中调用A的方法了吗。
public class A{ public void method(){ System.out.println("this is A method"); } } class B{ //引用A private A a; pulbic B(A a){ this.a = a; } //与A中相同的方法 public void method(){ //调用A中的方法 a.method(); } }
在此基础上,如果两者再同时实现接口C
public interface C{ public void method(); } public class A implements C{ @Override public void method(){ System.out.println("this is A method"); } } class B implements C{ //引用A private A a; pulbic B(A a){ this.a = a; } //与A中相同的方法 @Override public void method(){ //在调用a方法之前加上一些B的逻辑 System.out.println("begin invoke..."); //调用A中的方法 a.method(); //在调用完a的方法之后,再加上一些B的逻辑 System.out.println("invoke end."); } }
这样B就实现了A的静态代理了。
相关文章推荐
- java学习之旅42--面向对象_15_继承_组合
- Java中的继承与组合
- Java 继承与组合的使用情况
- java中继承与组合的简单理解
- JAVA使用继承还是组合
- java的组合和继承
- java 组合与继承2
- java-组合优于继承
- Java中的继承与组合
- Java面向对象继承与组合的问题
- Java组合与继承之间的选择
- Java中的继承与组合
- 从头认识java-6.3 组合使用聚合和继承
- java的继承和组合
- 0022 Java学习笔记-面向对象-继承、多态、组合
- Java继承和组合
- JAVA中的复用类:继承、组合和代理
- java代码复用(继承,组合以及代理)
- <Java中的继承和组合之间的联系和区别>
- 菜鸟译文(一)——Java中的继承和组合