eat();//Output:Animalisea"/> eat();//Output:Animalisea">

Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pewarisan PHP dan Polimorfisme: Seni Pengaturcaraan Berorientasikan Objek

Pewarisan PHP dan Polimorfisme: Seni Pengaturcaraan Berorientasikan Objek

WBOY
WBOYke hadapan
2024-02-29 13:52:33779semak imbas

Pewarisan PHP dan polimorfisme ialah konsep penting dalam pengaturcaraan berorientasikan objek. Ia memberikan kami alat yang berkuasa untuk membantu kami mengatur dan mengurus kod dengan lebih baik. Artikel ini ditulis oleh editor PHP Zimo Ia akan meneroka secara mendalam prinsip, penggunaan dan aplikasi praktikal warisan dan polimorfisme dalam PHP, membantu pembaca lebih memahami dan menggunakan seni pengaturcaraan berorientasikan objek.

class Animal {
public $name;
public function eat() {
echo "Animal is eating.";
}
}

class Dog extends Animal {
public function bark() {
echo "Dog is barking.";
}
}

$dog = new Dog();
$dog->eat(); // Output: Animal is eating.
$dog->bark(); // Output: Dog is barking.

Dalam contoh di atas, kelas Anjing mewarisi kelas Haiwan, jadi objek Anjing mempunyai semua sifat dan kaedah kelas Haiwan, dan juga boleh menggunakan kaedahnya sendiri, seperti kaedah bark().

phpPolymorphism ialah keupayaan untuk membenarkan objek yang berbeza untuk bertindak balas kepada mesej yang sama dengan cara yang berbeza. Dalam Berorientasikan objek Pengaturcaraan, polimorfisme dicapai melalui pewarisan dan penggantian kaedah.

class Animal {
public function eat() {
echo "Animal is eating.";
}
}

class Dog extends Animal {
public function eat() {
echo "Dog is eating.";
}
}

class Cat extends Animal {
public function eat() {
echo "Cat is eating.";
}
}

$animals = array(new Animal(), new Dog(), new Cat());

foreach ($animals as $animal) {
$animal->eat(); // Output: Animal is eating. Dog is eating. Cat is eating.
}

Dalam contoh di atas, kelas Haiwan mentakrifkan kaedah eat() dan kelas Dog dan Cat mengatasi kaedah ini, jadi apabila $animal->eat() dipanggil, kaedah sebenar yang dilaksanakan bergantung pada $jenis haiwan.

Kelas dan antara muka abstrak ialah dua mekanisme penting untuk mencapai polimorfisme dalam PHP. Kelas abstrak ialah kelas yang tidak boleh digunakan, ia hanya boleh diwarisi. Kaedah abstrak boleh ditakrifkan dalam kelas abstrak Kaedah abstrak tidak mempunyai pelaksanaan konkrit dan mesti dilaksanakan oleh subkelas.

abstract class Animal {
public $name;
public abstract function eat();
}

class Dog extends Animal {
public function eat() {
echo "Dog is eating.";
}
}

class Cat extends Animal {
public function eat() {
echo "Cat is eating.";
}
}

$dog = new Dog();
$dog->eat(); // Output: Dog is eating.

$cat = new Cat();
$cat->eat(); // Output: Cat is eating.

Dalam contoh di atas, kelas Haiwan ialah kelas abstrak dan ia mentakrifkan kaedah abstrak eat(). Kelas Anjing dan kelas Kucing mewarisi kelas Haiwan dan melaksanakan kaedah eat().

Antara muka ialah kelas yang hanya mengandungi pengisytiharan kaedah dan tidak mengandungi sebarang pelaksanaan. Kaedah dalam antara muka mesti dilaksanakan oleh kelas yang melaksanakan antara muka.

interface Animal {
public function eat();
}

class Dog implements Animal {
public function eat() {
echo "Dog is eating.";
}
}

class Cat implements Animal {
public function eat() {
echo "Cat is eating.";
}
}

$dog = new Dog();
$dog->eat(); // Output: Dog is eating.

$cat = new Cat();
$cat->eat(); // Output: Cat is eating.

Dalam contoh di atas, antara muka Haiwan mentakrifkan kaedah eat(). Kelas Dog dan kelas Cat melaksanakan antara muka Haiwan dan menyediakan pelaksanaan kaedah eat().

Warisan dan polimorfisme ialah bahagian penting pengaturcaraan berorientasikan objek dalam PHP. Mereka membenarkan pengaturcara mencipta kod yang boleh diguna semula dan boleh diperluaskan serta menjadikannya lebih mudah untuk difahami dan diselenggara.

Atas ialah kandungan terperinci Pewarisan PHP dan Polimorfisme: Seni Pengaturcaraan Berorientasikan Objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lsjlt.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam