2012-02-02 3 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)이하는 onDragListener 유형 인수에서 통과 기대 의미 번째 클래스의 initialize 방법 this 인터페이스의 실제 구현을 의미하거나 내가 그것을 어떻게 알 수 있습니까?

답변

3

상속은 is-a입니다.

SecondClass은 -입니다.

thisSecondClass입니다.

어르고, thisonDragListener입니다.

0

이 상황에서는 onDragListener를 구현할 개체 자체를 참조하고 있습니다.

0

setOnDragListener()onDragListener 인터페이스가 인수로 전달 될 것으로 예상합니다. 당신이 FirstClass.setOnDragListener()SecondClass 인스턴스에서 this를 통과 할 수 있도록 SecondClass 그것이 그것이 onDragListener이기 때문에 어디서든 onDragListener이 필요 사용할 수있는 onDragListener 인터페이스를 구현으로 thisonDragListener

0

를 구현하므로 SecondClassonDragListener 인터페이스를 구현합니다.

FirstClass.setOnDragListener (this) 호출에서 'this'는 onDragListener 인 SecondClass의 현재 인스턴스입니다.

관련 문제