java-ee - Java this关键字疑问
PHPz
PHPz 2017-04-18 10:32:07
0
5
505
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 a =new NewDemo ();

このとき、thisはオブジェクトaを指しています。
Demoクラスのthisは、インスタンス化して取得したオブジェクトの参照を参照します。
まず、被験者が Java の基本概念を理解することをお勧めします。

いいねを押す +0
Ty80

これはインスタンス生成時にオブジェクトを指しているのではありませんか?また、テストでは NewDemo が呼び出されませんか?デモは呼び出しを提供しない抽象クラスですよね?

いいねを押す +0
刘奇

this就是指当前对象,这个毋庸置疑,Demo类中的this其实是继承Demo的普通类的实例对象,因为抽象类是不能实例化的,而这个继承Demo的普通类必须要实现print方法,所以完全可以调用print方法。被験者はポリモーフィズムと継承の概念について詳しく学び、じっくり味わうことができます。

いいねを押す +0
Ty80

バイトコードを取り出して、どれが動的でどれが静的かを確認できます。

いいねを押す +0
黄舟

これは現在のオブジェクトを表します。気に入らない場合は削除してください

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート