2012-02-02 21 views
2

インターフェイスの定義は以下のようなクラスがあります。あなたは上記を参照したよう私のメソッドに渡す 'this'の説明が必要です

public class FirstClass { 

    private static onDragListener listener 

    public interface onDragListener{ 
     void doSomething(); 
    } 

    //a static method to set on my drag listener 
    public static void setOnDragListener(onDragListener listener){ 
      FirstClass.listener = listener 
    } 

} 

は、リスナーに設定するsetOnDragListener(onDragListener listener)静的な方法があります。

すると、以下のようなファーストクラスで定義されたインタフェースを実装する別のクラスがあります:私は上記のinitialize()方法でFirstClass.setOnDragListener(this);への引数のパスとしてthisを使用することができる理由

public class SecondClass implements onDragListener{ 
    public void initialize(){ 
      FirstClass.setOnDragListener(this); //my question is here about 'this'. 
    } 
} 

は、私の質問はありますか?

私はsetOnDragListener(onDragListener listener)を意味は、第二のクラスのinitialize方法でthisが本当のインタフェースの実装またはどのように私はそれを理解することができますを意味しない、で渡すonDragListener型引数を期待していますか?

答えて

3

継承はis-aの関係です。

SecondClass is-a onDragListenerです。

thisは、SecondClassです。

エルゴ、thisonDragListenerです。

0

このような状況では、onDragListenerを実装するオブジェクト自体を参照しています。

0

setOnDragListener()は、onDragListenerインターフェイスが引数として渡されると想定しています。あなたはFirstClass.setOnDragListener()SecondClassインスタンスからthisを渡すことができますので、あなたのSecondClassは、それがonDragListenerあるので、どこにでもonDragListenerが必要とされている使用することができonDragListenerインタフェースを実装したようthisonDragListener

0

を実装しているためSecondClassは、onDragListenerインタフェースを実装しています。

FirstClass.setOnDragListener(this)の呼び出しの 'this'は、onDragListenerであるSecondClassの現在のインスタンスです。

関連する問題