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

学习是最好的投资!

membalas semua(5)
Peter_Zhu

Kata kunci ini dalam Java tidak menghala ke objek semasa?

Ya.

Walau bagaimanapun, anda perlu membuat instantiat untuk mendapatkan objek. Dan anda tidak boleh membuat instantiate kelas abstrak, hanya subkelas bukan abstraknya. Contohnya, dalam kod anda:

NewDemo a =new NewDemo ();

Pada masa ini, ini menunjuk ke objek a.
Ini dalam kelas Demo merujuk kepada rujukan objek yang diperoleh dengan membuat instantiat.
Adalah disyorkan bahawa subjek memahami konsep asas Java terlebih dahulu.

Ty80

Bukankah ini menunjuk kepada objek apabila dibuat seketika? Selain itu, bukankah NewDemo dipanggil dalam Ujian anda? Demo ialah kelas abstrak yang tidak menyediakan panggilan, bukan?

刘奇

this merujuk kepada objek semasa Tidak syak lagi bahawa Demo dalam kelas this sebenarnya adalah objek contoh 继承Demo的普通类, kerana kelas abstrak tidak boleh digunakan, dan ini 继承Demo的普通类 mesti. dilaksanakan kaedah print, jadi anda boleh memanggil kaedah print. Subjek boleh mempelajari lebih lanjut tentang konsep polimorfisme dan warisan, dan menikmatinya dengan teliti.

Ty80

Anda boleh mengeluarkan kod bait untuk melihat yang mana satu dinamik dan yang mana satu statik.

黄舟

Ini mewakili objek semasa. Jika anda tidak menyukai ini, anda boleh mengalih keluar ini

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan