在面向对象编程中,多态是指相同的操作或方法可以作用于不同的对象,从而产生不同的结果。
方法重写
方法重写 是子类提供对从父类继承的方法的特定实现。这是实现多态的一种方式。方法重写允许子类提供具体的实现,而不是使用父类中定义的实现。
示例:
<?php
class Animal {
public function makeSound() {
echo "Some generic animal sound";
}
}
class Dog extends Animal {
public function makeSound() {
echo "Woof! Woof!";
}
}
class Cat extends Animal {
public function makeSound() {
echo "Meow!";
}
}
function printAnimalSound(Animal $animal) {
$animal->makeSound();
}
// 创建不同类型的对象
$dog = new Dog();
$cat = new Cat();
// 调用函数,显示不同的声音
printAnimalSound($dog); // 输出: Woof! Woof!
printAnimalSound($cat); // 输出: Meow!
?>
在这个示例中,Animal
类定义了一个 makeSound
方法。Dog
和 Cat
类重写了这个方法。printAnimalSound
函数接收一个 Animal
类型的参数,并调用 makeSound
方法。由于 makeSound
方法在 Dog
和 Cat
类中有不同的实现,因此输出的声音也不同。