PHP中的多态性:虚函数会覆盖父函数,但父函数仍会被调用

时间:2011-09-13 07:06:21

标签: php

我一直在用C ++编程,但已经转移到PHP一段时间似乎PHP中的多态性不同。我知道在PHP中,所有非私有的功能(即公共/受保护的)实际上也是虚拟的。这是我的子类定义

class Child extends Parent {
   public function foo() {

   }
}

然后我的父母看起来像

class Parent {
    public function foo() {

    }
}

我希望我的子类使用除foo()函数之外的所有父代码 - 我希望孩子使用自己的foo()函数。

问题是父母的foo()仍在调用。有趣的是,我的IDE(NetBeans)说它正在被正确覆盖。

我在父母和孩子中使用$this->foo() ..这应该没问题是吗?它只是说'为当前对象执行函数foo'。也许我在这里出错?

2 个答案:

答案 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”

你做的一切都很正确。