我很难理解为什么我们会得到这段代码的输出:
<?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,当这个父母的方法在孩子中被覆盖时?
非常感谢您!