2011-09-13 32 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()`當