继承与授权

问题描述:

下面的代码显示了如何通过继承来重用方法m()。如何为代表团工作?谢谢!继承与授权

class A{ 
    int m(); 
    } 

class B extends A{} 

B b =new B() 
b.m(); 

class B { 
    int m() { 
     return new A().m(); 
    } 
} 

class B { 
    private A a = new A(); 
    int m() { 
     return a.m(); 
    } 
} 

class B { 
    private A a; 

    public B(A a) { 
     this.a = a; 
    } 

    int m() { 
     return a.m(); 
    } 
} 

继承意味着IS-A: “类B的一个实例-A类A的实例”。

组合意味着HAS-A:“B类HAS-A类实例的实例”。

像这样:

class B { 

    private A a; 

    public B(A a) { this.a = a; } 

    public int m() { return a.m(); } 
} 

B级代理给M()调用其A级

它帮助,如果都实现一个共同的接口的实例。

public interface DoSomething { 
    int m(); 
} 

class A implements DoSomething { 
    public int m() { return 1; } 
} 

class B implements DoSomething { 

    private A a; 

    public B(A a) { this.a = a; } 

    public int m() { return a.m(); } 
}