2011-09-13 34 views
0

我一直在编程C++,但已经转移到PHP一会儿,好像多态性是在PHP不同。我知道在PHP中,所有非私有的功能(即public/protected)实际上也是虚拟的。这里是我的孩子类定义多态性在PHP中:虚拟功能覆盖父功能,但父母仍函数被调用

class Child extends Parent { 
    public function foo() { 

    } 
} 

那么我的父母看起来像

class Parent { 
    public function foo() { 

    } 
} 

我希望我的孩子上课要分开使用所有父母的代码从foo()功能 - 我希望孩子利用其拥有foo()功能。

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

我使用的父母和孩子$this->foo() ..这应该是OK?YES它只是说'为当前对象执行foo函数'..也许我在这里错了?

+2

'家长:: foo'不应该被调用。你的代码可能有问题。你能发表一个展示这种行为的例子吗? – Jon

+0

大家好,谢谢你的帮助。原来我傻..我提交页面和页面上提交去,才造就这是在提交PAGEE定义的类的对象,而我是包括文件!对不起:-S。 – ale

回答

3

除非你打电话parent::foo(),父母的foo()不会被调用。

2

只是尝试:

class Child1 extends Parent1 { 

    public function foo() { 
     echo 'c'; 
    } 

} 

class Parent1 { 

    public function foo() { 
     echo 'p'; 
    } 

} 



$class = new Child1; 

$class->foo(); 

打印 “C”

你做everithing权。做`$儿童安全> FOO()`当