2011-09-13 6 views
0

私はC++でプログラミングを行っていますが、PHPでは多変量がPHPで異なるように見えます。私は、PHPでは、非公開(すなわちpublic/protected)でないすべての関数が実際には仮想であることも知っています。ここに私の子供のクラス定義は、その後、私の親は私が私の子クラスがfoo()機能から離れて、親のすべてのコードを使用したいPHPの多態性:親関数は親関数をオーバーライドしますが、まだ親関数は呼び出されます

class Parent { 
    public function foo() { 

    } 
} 

のように見えます

class Child extends Parent { 
    public function foo() { 

    } 
} 

である - 私は、子供がそのを使用したいです独自のfoo()機能です。

問題は、親のfoo()がまだ呼び出されていることです。興味深いことに、私のIDE(NetBeans)では、正しくオーバーライドされていると言われています。

私は親と子で$this->foo()を使用しています。これはOKであるはずですか?それは単に '現在のオブジェクトの関数fooを実行する'と言っています..多分私はここで間違っているでしょうか?

+2

'$ child-> foo()'の実行中に 'Parent :: foo'を呼び出すべきではありません。おそらくあなたのコードに何か問題があります。この現象を示す例を投稿できますか? – Jon

+0

こんにちは、すべてのおかげです。私は愚かであることが分かりました。私はページを提出していました。提出するページには、提出ページで定義されたクラスのオブジェクトが作成されました。申し訳ありません:-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やって。

関連する問題