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指向谁?
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:
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.
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 bahawaDemo
dalam kelasthis
sebenarnya adalah objek contoh继承Demo的普通类
, kerana kelas abstrak tidak boleh digunakan, dan ini继承Demo的普通类
mesti. dilaksanakan kaedahprint
, jadi anda boleh memanggil kaedahprint
. Subjek boleh mempelajari lebih lanjut tentang konsep polimorfisme dan warisan, dan menikmatinya dengan teliti.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