您的位置:首页 > 编程语言 > Java开发

java组合与继承

2017-04-08 18:10 260 查看
在网上查了一些关于组合的文章,全都说到树,说实话真没理解。

谈一谈自己的理解:

继承应该比较容易理解,但是为何会与组合扯上关系。这是一个问题。

继承就是子类可以得到父类的东西而已,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