【发布时间】:2013-06-05 14:00:06
【问题描述】:
如何从子实例递归调用被覆盖的父函数?因为我没有使用静态方法,所以我不能使用parent::method(),但必须做一些不同的事情。我觉得有更好的方法来解决我的问题,也许是通过设计模式。这是我的班级结构:
class Creature {
public function eat() {
// feed and digest
}
}
class Mammal extends Creature {
public function eat() {
// gather and chew
}
}
class Human extends Mammal {
public function eat() {
// have a meal
}
}
class WesternPerson extends Human {
public function eat() {
// use knife & fork
}
}
$me = new WesternPerson();
$me->eat();
调用eat() 应该从特殊类递归地向上到非常抽象的类。最简单的方法是,如果我可以从被覆盖的函数中调用具有相同名称的父函数。但我知道,它被覆盖了,所以我不能。
【问题讨论】:
-
parent::method()不是静态调用(虽然看起来有点像)。只需使用那个就可以了。 -
非常感谢!由于
::运算符,我显然很困惑。我现在清楚了。
标签: php class oop inheritance parent-child