java-ee - Java this关键字疑问
PHPz
PHPz 2017-04-18 10:32:07
0
5
471
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指向谁?

PHPz
PHPz

学习是最好的投资!

모든 응답(5)
Peter_Zhu

Java의 this 키워드가 현재 객체를 가리키지 않나요?

그렇습니다.

그러나 객체를 얻으려면 인스턴스화해야 합니다. 그리고 추상 클래스는 인스턴스화할 수 없으며 추상이 아닌 하위 클래스만 인스턴스화할 수 있습니다. 예를 들어 코드에서는 다음과 같습니다.

NewDemo =new NewDemo();

이때, thisa 객체를 가리킵니다.
Demo 클래스의 는 객체를 인스턴스화하여 얻은 객체에 대한 참조를 의미합니다.
먼저 Java의 기본 개념을 이해하는 것이 좋습니다.

Ty80

이것은 인스턴스화될 때 객체를 가리키는 것이 아닌가요? 또한 테스트에서 NewDemo가 호출되지 않습니까? Demo는 호출을 제공하지 않는 추상 클래스죠?

刘奇

this은 현재 객체를 참조합니다. Demo 클래스의 this는 실제로 继承Demo的普通类의 인스턴스 객체입니다. 왜냐하면 추상 클래스는 인스턴스화할 수 없기 때문입니다. > 继承Demo的普通类 메소드를 구현해야 print 메소드를 호출할 수 있습니다. 피험자는 다형성과 상속의 개념에 대해 더 많이 배우고 신중하게 맛볼 수 있습니다. print

Ty80

바이트코드를 꺼내면 어떤 것이 동적이고 어떤 것이 정적인지 확인할 수 있습니다.

黄舟

현재 개체를 나타냅니다. 마음에 들지 않으시면 삭제하셔도 됩니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿