このコードの出力が得られる理由を理解するのが困難です。
<?php
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();
?>
したがって、Foo は Bar を拡張します。$myfoo はクラス Foo のオブジェクトです。Foo には test() というメソッドがないため、親の Bar から拡張します。しかし、なぜ test() の結果は
Bar::testPrivate
Foo::testPublic
この親のメソッドが子でオーバーライドされているときに、最初のメソッドが Foo::testPrivate ではない理由を教えてください。
事前にどうもありがとうございました!