以下是我从另一篇文章中获取的代码: Is what seems like polymorphism in PHP really polymorphism?
class Animal {
var $name;
function __construct($name) {
$this->name = $name;
}
}
class Dog extends Animal {
function speak() {
return "Woof, woof!";
}
}
class Cat extends Animal {
function speak() {
return "Meow...";
}
}
$animals = array(new Dog('Skip'), new Cat('Snowball'));
foreach($animals as $animal) {
print $animal->name . " says: " . $animal->speak() . '<br>';
}
答案 0 :(得分:1)
多态性意味着刺激的发送者不需要知道 接收实例的类。接收实例可以跟随 一个任意的阶级。
(Object-Oriented Software Engineering: A Use Case Driven Approach, 第55页)
在这种情况下,发件人是调用$animal->name
和$animal->speak()
的print语句。对象实例可以是任意类,它实现属性name
和方法speak
,而整个过程仍然有效。因此,通过这个定义,多态性。
否则,多态性是什么意思? (不同的人可能对同一个词有不同的理解)