2012-02-02 40 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)靜態方法。

然後,有在第一類中定義它實現了接口的另一類象下面這樣:

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

我的問題是爲什麼我可以使用this作爲參數傳遞給FirstClass.setOnDragListener(this);在上述initialize()方法?

我的意思是setOnDragListener(onDragListener listener)期待一個onDragListener類型參數傳遞,確實this在第二類的initialize方法意味着,真實的接口的實現或者我該怎麼理解呢?

回答

3

繼承關係是is-a

SecondClass is-a onDragListener

thisSecondClass

Ergo,thisonDragListener

0

在這種情況下,你指的是將要實現onDragListener的對象本身。

0

setOnDragListener()預計要將onDragListener接口作爲參數傳遞。 SecondClass實現onDragListener接口,這樣你就可以從SecondClass實例傳遞thisFirstClass.setOnDragListener(),因爲this實現onDragListener

0

當你的二等實現onDragListener接口可以在任何地方使用,需要一個onDragListener,因爲它是一個onDragListener。

對FirstClass.setOnDragListener(this)的調用中的'this'是SecondClass的當前實例,它是onDragListener。