Rumah >Java >javaTutorial >Bolehkah Kami Membuat Kelas Abstrak? Jawapan yang disemak

Bolehkah Kami Membuat Kelas Abstrak? Jawapan yang disemak

Patricia Arquette
Patricia Arquetteasal
2024-12-09 21:28:15603semak imbas

Can We Instantiate an Abstract Class?  A Revised Answer

Bolehkah Kita Benar-benar Menghasilkan Kelas Abstrak?

Semasa temu bual, soalan biasa timbul: "Bolehkah kita membuat instantiate kelas abstrak?" Jawapan tradisional ialah "Tidak", tetapi respons ini kini mungkin sudah lapuk.

Enigma Kelas Tanpa Nama

Untuk menjelaskan teka-teki ini, mari kita selidiki pemahaman semakan yang diperkenalkan oleh Java Language Specification (JLS) Bahagian 15.9.1 dan 12.5. Secara khusus, apabila ungkapan penciptaan contoh kelas berakhir dalam badan kelas, subkelas tanpa nama diisytiharkan. Oleh itu, kelas yang dijadikan instantiated menjadi subkelas tanpa nama, bukan kelas abstrak itu sendiri.

Demonstrasi Praktikal

Untuk menggambarkan konsep ini, pertimbangkan kod berikut:

abstract class My {
    public void myMethod() {
        System.out.print("Abstract");
    }
}

class Poly {
    public static void main(String[] a) {
        My m = new My() {};
        m.myMethod();
    }
}

Apabila menyusun kod ini, anda akan melihat penciptaan fail My$1.class, sepadan dengan subkelas tanpa nama dijana untuk instantiasi kelas tanpa nama yang dilakukan melalui My() {}.

Kesimpulan

Oleh itu, jawapan kepada soalan "Bolehkah kita membuat instantiate kelas abstrak ?" telah berkembang. Walaupun kami tidak boleh membuat instantiate kelas abstrak secara langsung, kami boleh mencipta kejadian subkelas awanama mereka, yang berkelakuan sebagai tika kelas abstrak, membolehkan kami menggunakan kaedah dan mengakses sifat dalam kelas abstrak.

Atas ialah kandungan terperinci Bolehkah Kami Membuat Kelas Abstrak? Jawapan yang disemak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn