PHP Academy · Pelajaran

Kelas dan Kaedah Abstrak

Tentukan kelas asas yang dilaksanakan sebahagiannya dengan kata kunci abstract.

Pelajaran 2 daripada 413 langkah

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

Corak 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 interfaces

Pelaksanaan 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
Percuma untuk bermula

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

  1. Melanjutkan Kelas dengan Pewarisan
  2. Kelas dan Kaedah Abstrak
  3. Melaksanakan Antara Muka
  4. Trait untuk Guna Semula Kod
← Kembali ke PHP Academy