4

私は数年前からJava開発者であり、約1年前にAndroid開発に移行しました。Androidに取り組んだ後、iOSで運試しをしました。これまでのところ良いですが、私はまだ「代表者」のアイデアに非常にかすんでいます。私はここでいくつかの記事を読みましたが、まだそれらについての最良のアイデアを持っていません。私には、インターフェースや抽象クラスの使用など、Javaの継承に似ているように見えます。

誰かが私が理解できるという観点で明確にすることができますか?

前もって感謝します。

4

2 に答える 2

10

いいえ、それは継承の同じ概念ではありません。

これは、AWT/Swingで使用されているリスナーアプローチのようなものだと思います。例えば:

class MyActionListener implements ActionListener {
  public void actionPerformed(ActionEvent e) { ... }
}

myComponent.addActionListener(new MyActionListener);

これは、ObjCでのデリゲートアプローチでは次のようになります。

@class MyActionListener : NSObject<NSActionListener>

-(void) actionPerformed:(NSEvent*)event;

@end

myComponent.delegate = [[[MyActionListener alloc] init] autorelease];

実際には、クラスの動作の一部を、コンポジションで使用される(継承ではなく)特定の他のオブジェクトにデリゲートして、必要なときにデリゲートメソッドが呼び出されるようにします(コールバック、特定の実装などを提供するため)。

于 2012-04-05T16:52:56.343 に答える
1

オブジェクトを使用する場合、そのクラスからいくつかのコールバックメソッドを継承できます。基本的に、そのオブジェクトにイベントがある場合に応答できます。

オブジェクトクラスは、そのイベントをクラスインスタンスに「委任」しています。

于 2012-04-05T16:50:09.823 に答える