Dalam siaran ini, kami meneroka Kelas Abstrak, bahagian penting abstraksi di Jawa. Kami akan membina konsep yang dibincangkan sebelum ini dan mengkaji bagaimana abstraksi memudahkan sistem yang kompleks. Kelas abstrak berfungsi sebagai pelan tindakan untuk kelas lain, membolehkan kami menumpukan hanya pada butiran yang berkaitan sambil menyembunyikan kerumitan yang tidak perlu.
Mari kita mendalami apa itu kelas abstrak, sebab ia wujud dan cara ia digunakan.
Kelas abstrak ialah kelas yang tidak boleh dibuat seketika dengan sendirinya. Ia direka bentuk untuk dilanjutkan oleh subkelas yang menyediakan pelaksanaan konkrit untuk kaedah abstraknya. Dalam erti kata lain, kelas abstrak membentangkan asas untuk subkelasnya, membolehkan penggunaan semula kod dan menguatkuasakan struktur.
Ditakrifkan menggunakan kata kunci abstrak.
Boleh mengandungi kaedah abstrak (kaedah tanpa badan) yang mesti dilaksanakan oleh subkelas.
Boleh juga mempunyai kaedah konkrit dengan pelaksanaan penuh.
Boleh mengisytiharkan pembina, medan dan kaedah bukan abstrak.
Tidak boleh dibuat segera secara langsung.
Kelas abstrak membenarkan pembangun menyembunyikan butiran pelaksanaan yang tidak perlu daripada pengguna sambil memastikan kaedah tertentu dilaksanakan oleh semua subkelas. Ia bertindak sebagai templat separuh takrif dan menggalakkan penggunaan semula kod dengan menyediakan fungsi dikongsi dalam kelas asas.
Untuk menunjukkan cara kelas abstrak berfungsi, mari lihat contoh berikut yang melibatkan kelas EmployeeParent abstrak dan subkelas ManagerChildnya. Kelas induk memegang fungsi dikongsi, manakala kelas anak melengkapkan pelaksanaan dengan butiran khusus seperti bonus prestasi.
package oops.abstract_class; public abstract class EmployeeParent { private int id, depId; private String name; private double basicSal; public EmployeeParent(int id, String name, int deptId, double basicSal) { this.id = id; this.depId = deptId; this.name = name; this.basicSal = basicSal; } // Abstract method to be implemented by subclasses. protected abstract double computeNetSalary(); protected double getBasicSal() { return basicSal; } @Override public String toString() { return "EmployeeParent [id=" + id + ", depId=" + depId + ", name=" + name + ", basicSal=" + basicSal + "]"; } }
package oops.abstract_class; public class ManagerChild extends EmployeeParent { private double perfBonus; public ManagerChild(int id, String name, int deptId, double basicSal, double perfBonus) { // Calling the constructor of the abstract class. super(id, name, deptId, basicSal); this.perfBonus = perfBonus; } // Implementing the abstract method from EmployeeParent. @Override public double computeNetSalary() { return getBasicSal() + perfBonus; } @Override public String toString() { return "ManagerChild [perfBonus=" + perfBonus + "\n" + super.toString() + "]"; } public static void main(String[] args) { ManagerChild manager = new ManagerChild(1, "Arshi", 2, 10000, 1890); System.out.println(manager); System.out.println("Net Salary: " + manager.computeNetSalary()); // Abstract class cannot be instantiated EmployeeParent employee = new EmployeeParent(); // Compile Error } }
Dalam kod di atas:
EmployeeParent ialah kelas abstrak yang mentakrifkan struktur untuk subkelasnya.
Ia mengandungi kedua-dua kaedah konkrit (seperti toString dan getBasicSal) dan kaedah abstrak (computeNetSalary), yang mesti dilaksanakan oleh mana-mana subkelas.
ManagerChild melanjutkan EmployeeParent dan menyediakan logik khusus untuk mengira gaji bersih, termasuk bonus prestasi.
Pembina kelas abstrak digunakan melalui panggilan super() dalam pembina kelas kanak-kanak, kerana kelas abstrak tidak boleh digunakan secara langsung.
Kebolehgunaan Kod: Apabila berbilang kelas berkongsi medan dan tingkah laku yang sama.
Struktur Kuatkuasa: Apabila anda ingin memberi mandat pelaksanaan kaedah tertentu dalam subkelas.
Pelaksanaan Separa: Apabila sesetengah logik boleh dikongsi antara kelas, manakala logik tertentu berbeza-beza.
Contoh Kes Penggunaan: Anda boleh mempunyai kelas Bentuk abstrak dengan sifat biasa (seperti warna) dan kaedah abstrak (seperti getArea), yang bentuk berbeza (Bulatan, Segiempat) akan dilaksanakan secara berbeza.
Kelas abstrak memainkan peranan penting dalam Java dengan menyediakan keseimbangan antara abstraksi penuh dan pelaksanaan konkrit. Mereka membenarkan pembangun memfokus pada perkara yang perlu sambil menyembunyikan butiran rumit daripada pengguna. Memahami dan menggunakan kelas abstrak dengan berkesan adalah langkah penting ke arah menguasai pengaturcaraan berorientasikan objek.
Nantikan siaran seterusnya dalam siri ini, tempat kami meneroka antara muka dan bagaimana ia berbeza daripada kelas abstrak!
Asas Java
Keperluan Temuduga Tatasusunan
Java Memory Essentials
Java Keywords Essentials
Kerangka Koleksi Penting
Selamat Pengekodan!
Atas ialah kandungan terperinci Abstraksi: Menyahkod Kelas Abstrak dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!