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