Kelas dan Kaedah Abstrak
Tentukan kelas asas yang dilaksanakan sebahagiannya dengan kata kunci abstract.
Kelas dan Kaedah Abstrak ialah pelajaran PHP Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran PHP Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.
Pengenalan: Kelas Abstrak
Kelas abstrak tidak boleh dibuat instans secara langsung — ia ialah templat. Kaedah abstrak mengisytiharkan tandatangan tanpa pelaksanaan; subkelas mesti menyediakannya.
Konsep Utama
Konsep utama:
- Diisytiharkan dengan
abstract class - Kaedah abstrak tidak mempunyai badan:
abstract public function x(); - Subkelas mesti melaksanakan semua kaedah abstrak
- Boleh mengandungi kaedah abstrak dan konkrit
Takrifan Kelas Abstrak
Contoh:
<?php
abstract class Animal {
public function __construct(protected string $name) {}
// Must be implemented by each subclass
abstract public function sound(): string;
// Shared concrete method
public function introduce(): string {
return "I am {$this->name} and I say: " . $this->sound();
}
}Melaksanakan Kaedah Abstrak
Sambungan:
<?php
class Dog extends Animal {
public function sound(): string { return 'Woof'; }
}
class Cat extends Animal {
public function sound(): string { return 'Meow'; }
}
$animals = [new Dog('Rex'), new Cat('Whiskers')];
foreach ($animals as $a) {
echo $a->introduce() . PHP_EOL;
}
// I am Rex and I say: Woof
// I am Whiskers and I say: MeowCorak Kaedah Templat
Lebih mendalam:
<?php
abstract class DataProcessor {
// Template method: defines the algorithm skeleton
final public function process(array $data): array {
$data = $this->validate($data);
$data = $this->transform($data);
return $this->format($data);
}
abstract protected function validate(array $data): array;
abstract protected function transform(array $data): array;
protected function format(array $data): array { return $data; }
}Kelas Abstrak berbanding Antara Muka
Penggunaan praktikal:
<?php
// Use abstract class when:
// - Subclasses share implementation code
// - You need constructor logic or state
// Use interface when:
// - Defining a contract (no implementation needed)
// - Multiple inheritance of type is needed
// A class can only extend ONE abstract class
// but can implement MULTIPLE interfacesPelaksanaan Separa
Lanjutan:
<?php
abstract class Repository {
// Concrete method available to all subclasses
protected function findById(int $id, string $table): array {
$stmt = $this->getDb()->prepare("SELECT * FROM $table WHERE id = ?");
$stmt->execute([$id]);
return $stmt->fetch(PDO::FETCH_ASSOC) ?: [];
}
abstract protected function getDb(): PDO;
abstract public function find(int $id): array;
}Corak
Corak Kelas Abstrak yang lazim digunakan untuk menyelesaikan masalah reka bentuk berulang dengan kemas. Gunakannya secara konsisten untuk menghasilkan kod yang mudah dibaca dan diselenggara.
Bila Hendak Menggunakannya
Mengetahui bila hendak menggunakan Kelas Abstrak sama pentingnya dengan mengetahui caranya. Penggunaan berlebihan membawa kepada kerumitan; penggunaan yang terlalu sedikit membawa kepada penduaan.
Contoh Dunia Sebenar
Dalam aplikasi sebenar, Kelas Abstrak kerap muncul dalam rangka kerja, pemetaan hubungan objek (ORM) dan lapisan perkhidmatan. Memahaminya menyediakan anda untuk menyumbang kepada projek PHP profesional.
Kesilapan Lazim
Elakkan kesilapan ini berkaitan Kelas Abstrak:
- Kelas abstrak tidak boleh dibuat instans dengan new
- Semua kaedah abstrak mesti dilaksanakan dalam subkelas konkrit
- Gunakan corak Kaedah Templat untuk menentukan rangka algoritma
- Kelas abstrak boleh mempunyai konstruktor, properti dan kaedah konkrit
Semakan Pantas
Bolehkah anda membuat instans kelas abstrak secara langsung dengan 'new'?
Imbas Kembali: Kelas Abstrak
Ringkasan:
- Kelas abstrak tidak boleh dibuat instans dengan new
- Semua kaedah abstrak mesti dilaksanakan dalam subkelas konkrit
- Gunakan corak Kaedah Templat untuk menentukan rangka algoritma
- Kelas abstrak boleh mempunyai konstruktor, properti dan kaedah konkrit
Pelajari PHP dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 49
- Pelajaran
- 195
Soalan Lazim
Adakah pelajaran “Kelas dan Kaedah Abstrak” percuma?
Ya — teks penuh “Kelas dan Kaedah Abstrak” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus PHP Academy, tingkat taraf kepada CoddyKit PRO. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Kelas dan Kaedah Abstrak”?
Tentukan kelas asas yang dilaksanakan sebahagiannya dengan kata kunci abstract. Anda berlatih PHP Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan PHP Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran PHP Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Kelas dan Kaedah Abstrak” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Melanjutkan Kelas dengan Pewarisan
- Kelas dan Kaedah Abstrak
- Melaksanakan Antara Muka
- Trait untuk Guna Semula Kod