【发布时间】:2021-05-07 00:38:25
【问题描述】:
例如:
<?php
class animal {
private $property = "animal";
public function whoami() {
return "I am an " . $this->property . ".\n";
}
}
class emu extends animal {
private $property = "emu";
}
$emu = new emu;
echo $emu->whoami(); // "I am an animal"
上面的代码会报告“我是一只动物”,但我希望它报告“我是一只鸸鹋”,而不需要重写 whoami() 方法。
有没有办法在 PHP 中做到这一点?
【问题讨论】:
-
private属性只能由定义该属性的类访问。我认为protected是您在这里所追求的。见php.net/manual/en/language.oop5.visibility.php -
是的,就是这样,谢谢@cOle2 - 公共财产也可以工作,但它当然是公共的。
-
处理继承时的一般经验法则:如果父类和子类都有同名的私有属性或方法,那么它应该不是私有的.它应该受到保护。
标签: php oop inheritance