Dalam pengaturcaraan berorientasikan objek, polimorfisme membenarkan objek bertindak balas kepada panggilan kaedah yang sama dengan cara yang berbeza, manakala pewarisan membenarkan subkelas untuk mewarisi dan melanjutkan fungsi kelas induk. Polimorfisme ditunjukkan dalam tindak balas pembezaan jenis objek yang berbeza kepada kaedah yang sama, seperti kaedah speak() objek haiwan, anjing dan kucing. Warisan dicerminkan dalam subkelas yang mewarisi data dan kaedah daripada kelas induk Contohnya, kelas pekerja mewarisi nama dan umur daripada kelas manusia, dan menambah atribut gaji baharu. Dalam kes sebenar, kelas kiwi mewarisi nama buah kelas buah, manakala kelas kereta sukan menulis semula kaedah getType() dalam kelas induk melalui polimorfisme, merealisasikan respons yang berbeza kepada kaedah yang sama dalam kelas kereta, mengembalikan "kereta" " dan "kereta" masing-masing. Taip maklumat untuk "kereta sukan".
Pengaturcaraan Berorientasikan Objek PHP Lanjutan: Memahami Polimorfisme dan Warisan
Gambaran Keseluruhan
Polymorphism dan warisan ialah dua konsep asas berorientasikan objek (OP). Polimorfisme membenarkan objek bertindak balas kepada panggilan kaedah yang sama dengan cara yang berbeza, manakala pewarisan membenarkan penciptaan kelas baharu yang mewarisi dan melanjutkan fungsi kelas sedia ada.
Polymorphism
Polymorphism membenarkan objek melakukan operasi berbeza bergantung pada jenisnya.
class Animal { public function speak() { echo "Animal speaks\n"; } } class Dog extends Animal { public function speak() { echo "Dog barks\n"; } } class Cat extends Animal { public function speak() { echo "Cat meows\n"; } } $dog = new Dog(); $dog->speak(); // 输出:Dog barks $cat = new Cat(); $cat->speak(); // 输出:Cat meows
Warisan
Warisan membolehkan penciptaan kelas baharu (subkelas) yang mewarisi data dan kaedah daripada kelas sedia ada (kelas induk).
class Person { protected $name; protected $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function getName() { return $this->name; } } class Employee extends Person { private $salary; public function __construct($name, $age, $salary) { parent::__construct($name, $age); // 调用父类构造函数 $this->salary = $salary; } public function getSalary() { return $this->salary; } } $employee = new Employee("John Doe", 30, 50000); echo "Employee name: " . $employee->getName() . "\n"; echo "Employee salary: " . $employee->getSalary() . "\n";
Kes praktikal
Kelas buah-buahan dan kelas kiwi (warisan)
class Fruit { protected $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } } class Kiwi extends Fruit { public function __construct() { parent::__construct("Kiwi"); } } $kiwi = new Kiwi(); echo "Fruit name: " . $kiwi->getName() . "\n";
Kelas kereta dan kelas kereta sport (polimorfisme)
class Car { protected $make; protected $model; public function __construct($make, $model) { $this->make = $make; $this->model = $model; } public function getType() { return "Car"; } } class SportsCar extends Car { public function getType() { return "Sports Car"; } } $car = new Car("Toyota", "Camry"); $sportsCar = new SportsCar("Ferrari", "F430"); echo "Car type: " . $car->getType() . "\n"; echo "Sports car type: " . $sportsCar->getType() . "\n";
Atas ialah kandungan terperinci Pengaturcaraan berorientasikan objek PHP lanjutan: memahami polimorfisme dan warisan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!