Dalam hierarki warisan top-down, kelas yang terletak di tingkat atas lebih umum dan bahkan mungkin lebih abstrak. Dari perspektif tertentu, kelas leluhur lebih umum, mereka hanya mengandung beberapa anggota paling dasar, dan orang hanya menggunakannya sebagai kelas dasar untuk mendapatkan kelas lain, dan tidak akan digunakan untuk membuat objek. Bahkan, Anda hanya dapat memberikan definisi metode tanpa mengimplementasikannya, dan subclass mengimplementasikannya sesuai dengan kebutuhan spesifik.
Metode yang hanya memberikan definisi metode tetapi tidak mengimplementasikan secara konkret disebut metode abstrak. Kelas yang berisi satu atau lebih metode abstrak juga harus dinyatakan sebagai kelas abstrak.
Gunakan pengubah abstrak untuk mewakili metode abstrak dan kelas abstrak.
Selain mengandung metode abstrak, kelas abstrak juga dapat berisi variabel spesifik dan metode spesifik. Bahkan jika suatu kelas tidak mengandung metode abstrak, itu dapat dinyatakan sebagai kelas abstrak untuk mencegahnya menjadi instantiated.
Kelas abstrak tidak dapat dipakai, metode abstrak harus diimplementasikan dalam subkelas. Silakan lihat kode berikut:
Impor Java.lang.System. Driver d = driver baru (); void setName (nama string) {this.name = name; public void work () {out.println ("Nama saya" + this.getName () + ", saya memberikan kuliah, tolong jangan melihat -lihat ..."); // Metode ini harus diimplementasikan public void work () {out.println ("Nama saya" + this.getName () + ", saya mengemudi dan tidak dapat menjawab panggilan ...");
Hasil Menjalankan:
Nama saya Wang Ming, saya memberikan kuliah, tolong jangan melihat -lihat ... nama saya Xiao Chen, saya mengemudi dan tidak dapat menjawab telepon ...
Beberapa penjelasan tentang kelas abstrak:
Kelas abstrak tidak dapat digunakan secara langsung. Namun, variabel dapat dibuat yang tipenya adalah kelas abstrak dan membiarkannya menunjuk ke instance dari subclass konkret. , yaitu, penerapan polimorfisme.
Tidak mungkin ada metode konstruksi abstrak atau metode statis abstrak.
Kelas akan menjadi kelas abstrak dalam kasus -kasus berikut:
Ketika satu atau lebih metode kelas adalah metode abstrak;
Ketika kelas adalah subclass dari kelas abstrak dan tidak dapat memberikan detail implementasi atau badan metode untuk metode abstrak apa pun;
Ketika kelas mengimplementasikan antarmuka dan tidak dapat memberikan detail implementasi atau metode metode untuk metode abstrak apa pun;
Apa yang kita bicarakan di sini adalah bahwa dalam kasus ini kelas akan menjadi kelas abstrak, dan tidak dikatakan bahwa kelas abstrak pasti akan memiliki situasi ini.
Kesalahan khas: kelas abstrak harus berisi metode abstrak. Tetapi di sisi lain, "kelas yang berisi metode abstrak harus merupakan kelas abstrak" adalah benar.
Faktanya, kelas abstrak bisa menjadi kelas yang benar -benar normal