Bolehkah Kita Menghasilkan Kelas Abstrak: Menyelam Lebih Dalam
Dalam pemahaman konvensional, kelas abstrak tidak boleh dibuat seketika. Tetapi teka-teki temu bual baru-baru ini membawa perspektif yang berbeza. Mari kita mendalami soalan yang menarik ini dengan contoh praktikal:
abstract class My { public void mymethod() { System.out.print("Abstract"); } } class Poly { public static void main(String a[]) { My m = new My() {}; m.mymethod(); } }
Bertentangan dengan tanggapan tradisional, adalah mungkin untuk mewujudkan kelas abstrak dalam senario ini. Walau bagaimanapun, terdapat perbezaan yang ketara: daripada menjadikan kelas abstrak itu sendiri, kami mencipta subkelas tanpa nama daripadanya.
Memahami Subkelas Tanpa Nama
Subkelas tanpa nama ialah kelas dalaman yang tidak dinamakan yang memanjangkan atau melaksanakan superclass atau antara muka tertentu. Dalam kod di atas:
Pengesahan Melalui Kompilasi
Untuk mengesahkan kelakuan ini, pertimbangkan untuk menyusun kod. Dalam output yang disusun, kita akan melihat:
Kehadiran Poly$1.class mengesahkan instantiasi subclass tanpa nama, bukan kelas abstrak itu sendiri.
Spesifikasi Bahasa Jawa Sokongan
Spesifikasi Bahasa Java (JLS) secara eksplisit menyebut subkelas tanpa nama dalam Bahagian 15.9.1: "Kelas yang digunakan ialah subkelas tanpa nama."
Kesimpulan
Walaupun kelas abstrak tidak boleh dibuat secara langsung, ia boleh dilanjutkan dengan subkelas tanpa nama, membolehkan penciptaan contoh dengan kaedah dan medan tersuai. Nuansa ini ialah alat yang berharga untuk memahami dan menggunakan konsep berorientasikan objek Java.
Atas ialah kandungan terperinci Bolehkah Kami Menghasilkan Kelas Abstrak di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!