如果我的课程具有如下所示的界面定义;
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
是否意味着接口的实际实现或我该怎么理解呢?
答案 0 :(得分:3)
继承是is-a
关系。
SecondClass
是一个onDragListener
。
this
是SecondClass
。
Ergo,this
是onDragListener
。
答案 1 :(得分:0)
在这种情况下,您将引用将实现onDragListener的对象本身。
答案 2 :(得分:0)
setOnDragListener()
期望将onDragListener
接口作为参数传递。 SecondClass
实现了onDragListener
界面,因此您可以将this
实例从SecondClass
实例传递到FirstClass.setOnDragListener()
,因为this
实现了onDragListener
< / p>
答案 3 :(得分:0)
当您的SecondClass实现onDragListener接口时,它可以在任何需要onDragListener的地方使用,因为它是onDragListener。
对FirstClass.setOnDragListener(this)的调用中的'this'是SecondClass的当前实例,它是一个onDragListener。