まず第一に、私は言語理論についてほとんど何も知りませんし、Java 以外の他の言語はほとんど知りませんが、私はクールだと思うアイデアを持っていまし
た
.言語 x が何年もの間それを持っていた
方法 c: 頭がおかしい
d: 上記のすべて
このアイデアは、構成にコードの再利用を同じように容易にextendsします。
したがって、次のようなクラスがあるとします。
パブリック インターフェイス A {
public void methodInA();
}
そして、次のようなクラスがありました:
公開クラス B {
プライベート合成 A;
パブリックB() {
// コンストラクター内で A を構築します
}
}
その後、これを行うことができます:
B myB = 新しい B(); myB.methodInA();
B のクラスに委任を追加する必要はありません。ただし、継承と同じこともできます。つまり、次のようになります。
@オーバーライド
public void methodInA(){
// B 独自の委譲メソッド
}
欠点は次のとおりです。
- メソッドはソース コードに隠されているため、呼び出し元がわかりにくくなっていますが、これは次の場合にも当てはまります。
extends - 構成されたフィールドが同じメソッド シグネチャを共有する場合、競合を解決する必要があります (競合するインターフェイスはこれをどのように解決しますか?)
- 同じタイプの複数の合成フィールドが必要な場合は、どのフィールドに委譲するかについて明らかな競合が発生します。
- おそらく私が考えたことのない他の100のこと
私が言うように、私は明らかに言語理論家ではありませんし、それについて何年も考えたこともありません。アイデアが頭に浮かんだだけで、自分がどれほど間違っているかを知りたいと思いました. ちょっとクールだと思います。