まず第一に、私は言語理論についてほとんど何も知りませんし、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のこと
私が言うように、私は明らかに言語理論家ではありませんし、それについて何年も考えたこともありません。アイデアが頭に浮かんだだけで、自分がどれほど間違っているかを知りたいと思いました. ちょっとクールだと思います。