我一直在用C ++编程,但已经转移到PHP一段时间似乎PHP中的多态性不同。我知道在PHP中,所有非私有的功能(即公共/受保护的)实际上也是虚拟的。这是我的子类定义
class Child extends Parent {
public function foo() {
}
}
然后我的父母看起来像
class Parent {
public function foo() {
}
}
我希望我的子类使用除foo()
函数之外的所有父代码 - 我希望孩子使用自己的foo()
函数。
问题是父母的foo()
仍在调用。有趣的是,我的IDE(NetBeans)说它正在被正确覆盖。
我在父母和孩子中使用$this->foo()
..这应该没问题是吗?它只是说'为当前对象执行函数foo'。也许我在这里出错?
答案 0 :(得分:3)
除非您致电parent::foo()
,否则不会致电父母的foo()
。
答案 1 :(得分:2)
刚试过:
class Child1 extends Parent1 {
public function foo() {
echo 'c';
}
}
class Parent1 {
public function foo() {
echo 'p';
}
}
$class = new Child1;
$class->foo();
打印“c”
你做的一切都很正确。