Rumah >pembangunan bahagian belakang >tutorial php >Warisan, polimorfisme dan antara muka: tiga ciri berorientasikan objek utama PHP

Warisan, polimorfisme dan antara muka: tiga ciri berorientasikan objek utama PHP

WBOY
WBOYasal
2023-05-11 15:45:061450semak imbas

PHP ialah bahasa pengaturcaraan sebelah pelayan yang menyokong pengaturcaraan berorientasikan objek (OOP) sejak PHP5. Idea teras OOP adalah untuk merangkum data dan tingkah laku dalam objek untuk meningkatkan kebolehselenggaraan dan kebolehskalaan program. Dalam PHP, pengaturcaraan berorientasikan objek mempunyai tiga ciri utama: pewarisan, polimorfisme dan antara muka.

1. Warisan

Warisan bermaksud satu kelas boleh mewarisi sifat dan kaedah daripada kelas lain. Kelas yang diwarisi dipanggil kelas induk atau kelas asas, dan kelas yang diwarisi dipanggil subkelas atau kelas terbitan. Subkelas boleh mewarisi sifat dan kaedah kelas induk dan boleh mengatasi atau melanjutkannya.

Sebagai contoh, kita boleh mentakrifkan Haiwan kelas haiwan, yang mempunyai atribut $name dan $color, serta kaedah eat() dan sleep(). Kemudian kita boleh mentakrifkan kelas anjing Anjing, yang mewarisi daripada kelas Haiwan dan menambah kaedah bark():

class Animal {
    protected $name;
    protected $color;
    
    public function eat() {
        echo "$this->name is eating.
";
    }
    
    public function sleep() {
        echo "$this->name is sleeping.
";
    }
}

class Dog extends Animal {
    public function bark() {
        echo "$this->name is barking.
";
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->eat(); // 输出: Fido is eating.
$dog->sleep(); // 输出: Fido is sleeping.
$dog->bark(); // 输出: Fido is barking.

Perhatikan bahawa dalam kelas induk, kami menggunakan kata kunci yang dilindungi untuk mentakrifkan atribut $name dan $ warna. Ini bermakna bahawa mereka hanya boleh diakses dalam kelas ibu bapa dan anak dan bukan secara langsung di luar kelas. Dalam subkelas, kami telah menggunakan kata kunci awam untuk mentakrifkan kaedah bark(), yang bermaksud ia boleh diakses di dalam dan di luar kelas.

2. Polimorfisme

Polymorfisme bermaksud objek boleh muncul dalam pelbagai bentuk. Dalam pengaturcaraan berorientasikan objek, polimorfisme bermakna subkelas boleh menggantikan kelas induk tanpa menjejaskan ketepatan program.

Sebagai contoh, kita boleh mentakrifkan Zoo kelas zoo, yang mempunyai kaedah show($animal) untuk memaparkan maklumat haiwan. Kini kita boleh menghantar objek haiwan yang berbeza kepada kaedah show() untuk mencapai polimorfisme:

class Zoo {
    public function show($animal) {
        $animal->eat();
        $animal->sleep();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";

$zoo = new Zoo();
$zoo->show($dog); // 输出: Fido is eating. Fido is sleeping.
$zoo->show($cat); // 输出: Fluffy is eating. Fluffy is sleeping.

Dalam contoh ini, kami telah menambah kelas kucing baharu Cat, yang mewarisi daripada kelas Haiwan dan menggantikan kaedah makan (). Kita boleh menghantar objek anjing dan kucing ke kaedah show() dan memandangkan kedua-duanya adalah subkelas kelas Haiwan, mereka boleh mencapai polimorfisme.

3. Antara Muka

Antara muka ialah spesifikasi yang mentakrifkan satu set kaedah tetapi tidak mempunyai pelaksanaan khusus. Dalam PHP, kelas boleh melaksanakan satu atau lebih antara muka untuk memenuhi keperluan fungsi tertentu.

Sebagai contoh, kita boleh mentakrifkan antara muka Boleh Ditutur, yang mempunyai kaedah bercakap() untuk mengeluarkan bunyi haiwan. Kami kemudiannya boleh meminta kelas anjing dan kucing melaksanakan antara muka ini:

interface Speakable {
    public function speak();
}

class Dog extends Animal implements Speakable {
    public function bark() {
        echo "$this->name is barking.
";
    }
    
    public function speak() {
        $this->bark();
    }
}

class Cat extends Animal implements Speakable {
    public function meow() {
        echo "$this->name is meowing.
";
    }
    
    public function speak() {
        $this->meow();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->speak(); // 输出: Fido is barking.

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";
$cat->speak(); // 输出: Fluffy is meowing.

Dalam contoh ini, kami mentakrifkan antara muka Boleh Ditutur, yang mempunyai kaedah bercakap(). Kemudian kami membiarkan kelas Dog dan Cat melaksanakan antara muka ini dan melaksanakan kaedah speak() masing-masing. Dengan cara ini kita boleh memanggil kaedah speak() pada objek anjing dan kucing tanpa mengetahui pelaksanaan khusus mereka.

Warisan, polimorfisme dan antara muka ialah tiga ciri utama pengaturcaraan berorientasikan objek PHP. Ia membolehkan kami mengatur dan mengurus kod dengan lebih baik serta meningkatkan kebolehgunaan semula dan kebolehskalaan kod. Memahami ciri ini boleh memberi kita pemahaman yang lebih mendalam tentang model pengaturcaraan berorientasikan objek PHP.

Atas ialah kandungan terperinci Warisan, polimorfisme dan antara muka: tiga ciri berorientasikan objek utama PHP. 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