1

私はphpが初めてで、可視性についてのドキュメントを調べていました。ドキュメントのこの例と少し混乱しています。への呼び出しが行われたときに、sへの$myFoo->test()呼び出しを行うべきではありません。オブジェクトではなくオブジェクトであってはならないということですか?. 私の知る限り(ここでは間違っているかもしれません) 、継承された独自のメソッドがあり、呼び出すと '$this->testPrivate'がs objectである必要があります。のメソッドを呼び出すのはどうですか?Foo$this->testPrivate();$thisFooBarFootest()Bar$myFoo->test()$thisFoomyFooBartestPrivate

class Bar 
{
public function test() {
    $this->testPrivate();
    $this->testPublic();
}

public function testPublic() {
    echo "Bar::testPublic\n";
}

private function testPrivate() {
    echo "Bar::testPrivate\n";
}
}

class Foo extends Bar 
{
public function testPublic() {
    echo "Foo::testPublic\n";
}

private function testPrivate() {
    echo "Foo::testPrivate\n";
}
}

$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate 
            // Foo::testPublic
?>
4

1 に答える 1

5

test()にあり、にアクセスできるBar最高レベルのメソッドを呼び出します。にアクセスできるため( であるため)、それを呼び出すことができますが、 ( にあるため) にアクセスできないため、代わりに独自のものを呼び出します。Bar Foo's testPublicpublicFoo's testPrivate()privateFootestPrivate()

于 2015-11-29T12:07:14.610 に答える