Rumah > Soal Jawab > teks badan
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指向谁?
天蓬老师2017-04-18 10:34:07
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.
PHP中文网2017-04-18 10:34:07
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?
怪我咯2017-04-18 10:34:07
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.
PHP中文网2017-04-18 10:34:07
Anda boleh mengeluarkan kod bait untuk melihat yang mana satu dinamik dan yang mana satu statik.
黄舟2017-04-18 10:34:07
Ini mewakili objek semasa. Jika anda tidak menyukai ini, anda boleh mengalih keluar ini