Rumah  >  Artikel  >  Java  >  Abstraksi: Menyahkod Kelas Abstrak dalam Java

Abstraksi: Menyahkod Kelas Abstrak dalam Java

Barbara Streisand
Barbara Streisandasal
2024-10-30 08:09:03848semak imbas

Abstraction: Decoding Abstract Classes in Java

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.


Apakah Kelas Abstrak?

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.

Ciri Utama Kelas Abstrak:

  • 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.


Mengapa Kelas Abstrak?

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.


Contoh: Pekerja dan Pengurus

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.

EmployeeParent.java

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 + "]";
    }
}

ManagerChild.java

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
    }
}

Memecahkan Contoh

Dalam kod di atas:

  1. EmployeeParent ialah kelas abstrak yang mentakrifkan struktur untuk subkelasnya.

  2. Ia mengandungi kedua-dua kaedah konkrit (seperti toString dan getBasicSal) dan kaedah abstrak (computeNetSalary), yang mesti dilaksanakan oleh mana-mana subkelas.

  3. ManagerChild melanjutkan EmployeeParent dan menyediakan logik khusus untuk mengira gaji bersih, termasuk bonus prestasi.

  4. Pembina kelas abstrak digunakan melalui panggilan super() dalam pembina kelas kanak-kanak, kerana kelas abstrak tidak boleh digunakan secara langsung.


Bilakah Anda Harus Menggunakan Kelas Abstrak?

  • 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.


Kesimpulan

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!


Catatan Berkaitan

  • 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!

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