public abstract class Demo{
public Demo(){
this.print();
}
public abstract void print();
}
public class NewDemo extends Demo{
public NewDemo (){
this.print();
}
@Override
public void print() {
System.out.println("NewDemo");
}
}
public class Test{
public static void main(String args[]){
NewDemo a =new NewDemo ();
}
}
Java中this关键字不是指向当前对象。为啥在Demo构造器中能调用子类的print()方法?
抽象类的中的this指向谁?
그렇습니다.
그러나 객체를 얻으려면 인스턴스화해야 합니다. 그리고 추상 클래스는 인스턴스화할 수 없으며 추상이 아닌 하위 클래스만 인스턴스화할 수 있습니다. 예를 들어 코드에서는 다음과 같습니다.
이때, this는 a 객체를 가리킵니다.
Demo 클래스의 이는 객체를 인스턴스화하여 얻은 객체에 대한 참조를 의미합니다.
먼저 Java의 기본 개념을 이해하는 것이 좋습니다.
이것은 인스턴스화될 때 객체를 가리키는 것이 아닌가요? 또한 테스트에서 NewDemo가 호출되지 않습니까? Demo는 호출을 제공하지 않는 추상 클래스죠?
this
은 현재 객체를 참조합니다.Demo
클래스의this
는 실제로继承Demo的普通类
의 인스턴스 객체입니다. 왜냐하면 추상 클래스는 인스턴스화할 수 없기 때문입니다. >继承Demo的普通类
메소드를 구현해야print
메소드를 호출할 수 있습니다. 피험자는 다형성과 상속의 개념에 대해 더 많이 배우고 신중하게 맛볼 수 있습니다.print
바이트코드를 꺼내면 어떤 것이 동적이고 어떤 것이 정적인지 확인할 수 있습니다.
현재 개체를 나타냅니다. 마음에 들지 않으시면 삭제하셔도 됩니다