Rumah >Java >javaTutorial >Bolehkah Kelas Abstrak Mempunyai Pembina dan Apakah Faedahnya?

Bolehkah Kelas Abstrak Mempunyai Pembina dan Apakah Faedahnya?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 20:20:15465semak imbas

Can Abstract Classes Have Constructors and What Are Their Benefits?

Bolehkah Kelas Abstrak Mempunyai Pembina?

Kelas abstrak sememangnya boleh mempunyai pembina. Bertentangan dengan kepercayaan popular, ciri ini membenarkan reka bentuk kelas yang berkuasa dan penguatkuasaan kekangan.

Penggunaan Pembina dalam Kelas Abstrak

Pertimbangkan contoh kelas abstrak berikut:

abstract class Product {
    int multiplyBy;
    public Product(int multiplyBy) {
        this.multiplyBy = multiplyBy;
    }
    public int mutiply(int val) {
        return multiplyBy * val;
    }
}

Dalam contoh ini, kelas abstrak Produk mempunyai pembina yang memulakan medan multiplyBy. Kelas konkrit memanjangkan Produk kemudiannya boleh menggunakan pembina ini untuk menguatkuasakan invarian kelas atau mengekang pemulaan medan.

Pembina Kelas Konkrit

Kelas konkrit yang diwarisi daripada Produk mesti memanggil pembina induk secara eksplisit kerana tiada pembina lalai dalam kelas abstrak. Berikut ialah beberapa contoh:

class TimesTwo extends Product {
    public TimesTwo() {
        super(2);
    }
}

class TimesWhat extends Product {
    public TimesWhat(int what) {
        super(what);
    }
}

Kelas konkrit TimesTwo mengodkan keras nilai darabBy kepada 2, manakala TimesWhat membenarkan pemanggil untuk menentukannya.

Faedah Pembina Kelas Abstrak

Pembina kelas abstrak menyediakan beberapa faedah:

  • Penguatkuasaan kekangan atau invarian kelas.
  • Pemulaan medan biasa dikongsi merentas semua subkelas.
  • Penyediaan awal objek kompleks tanpa mengorbankan struktur kelas.

Nota: Seruan pembina eksplisit diperlukan dalam subkelas, kerana pembina abstrak tidak mempunyai pelaksanaan lalai.

Atas ialah kandungan terperinci Bolehkah Kelas Abstrak Mempunyai Pembina dan Apakah Faedahnya?. 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