2017-06-06 9 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

継承手段-Aは: "クラスBのインスタンスであるクラス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(); } 
}