내 수업이 Activity
으로 확장되고 SensorEventListener
을 구현하는 경우 어느 것이 this
입니까? Activity
또는 SensorEventListener
을 참조 하시겠습니까? 아니면 둘다? 고마워요."this"가 참조하는 것은 어느 것입니까?
public class MainActivity extends Activity implements SensorEventListener
내 수업이 Activity
으로 확장되고 SensorEventListener
을 구현하는 경우 어느 것이 this
입니까? Activity
또는 SensorEventListener
을 참조 하시겠습니까? 아니면 둘다? 고마워요."this"가 참조하는 것은 어느 것입니까?
public class MainActivity extends Activity implements SensorEventListener
this
클래스의 현재 인스턴스를 말합니다. implements
은 인터페이스 용이므로 this
은이를 참조 할 수 없습니다. 클래스의 인스턴스 만 만들 수는 없습니다. Activity
은 MainActivity
의 수퍼 클래스이며 인스턴스가 만들어지지 않았습니다. 인스턴스이 조금 무의미하지만, 당신은 아무 문제없이 MainActivity
, Activity
또는 SensorEventListener
의 모든 this
캐스팅 할 수 MainActivity
그러나
이 될 것입니다.
고마워요? 왜 이것을 SensorEventListener로 전송할 수 있습니까? –
클래스에 의해 구현 된 수퍼 클래스와 인터페이스로 항상 캐스트 할 수 있습니다. 그래서 생성자에'SensorEventListener'가 필요한 다른 클래스가 있다고 가정 해 봅시다. 당신은'SensorEventListener'를 구현하는 클래스를 넘겨 줄 수 있습니다 만,'SensorEventListener'를 필요로하는 클래스는 MainActivity를 전달했다는 것을 모르기 때문에'SensorEventListener' 인터페이스에있는 그 객체의 메소드 만 호출 할 수 있습니다. 그것이 다형성이 @dgimenes에 의해 언급 된 것과 같습니다. – SDJMcHattie
사실, 이것은 정확히 View에 대한 'Context'가 필요하거나 LayoutInflater에 액세스 할 때마다 발생합니다. 액티비티는 Context의 하위 하위 클래스이므로 컨텍스트로 참조 될 수 있으므로 거의 항상 컨텍스트로 액티비티를 전달합니다. – SDJMcHattie
this
는 "대회를 변경"과 Activity
의 인스턴스로 보면 물론
클래스의 인스턴스가 될 것 MainActivity
를 참조한다 :이 경우 this
에이 Activity
을 참조 할 수 있지만, 귀하의 질문을 찾고, 답변은 확실히 MainActivity
this
키워드는 현재 활동이나 클래스 또는 개체를 나타냅니다.
private int number;
public example(int number) {
this.number = number;
}
여기에서 this.number는 private int number 변수를 나타내며 number는 메소드 int number를 나타냅니다.
또 다른 예는 당신이 입력 할 때 클래스/프로젝트에 액션 청취자를 구현 한 이후
class example implements ActionListener{
public static void main(String[] args)
{
JButton button = new JButton();
button.addActionListener(this);
}
}
(자바로 그 같은) 것, 그것은 액션 청취자 라이브러리를 호출합니다.
당신은 Polimorphism에 관해 읽을 것을 제안합니다. http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html – dgimenes