我不明白为什么代码的第一个输出会打印“Bar::testPrivate”,因为我们正在使用子类的实例调用父类的测试方法。所以,当调用测试函数中的第一行代码时,它是“$this->testPrivate();” 应该调用子类的 testPrivate 方法,因此打印“Foo::testPrivate”而不是“Bar::testPrivate”。
<pre>
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
</pre>