2017-06-06 133 views
-3

下面的代碼顯示瞭如何通過繼承來重用方法m()。如何爲代表團工作?謝謝!繼承與授權

class A{ 
    int m(); 
    } 

class B extends A{} 

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

回答

2
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(); 
    } 
} 
2

繼承意味着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(); } 
}