我很难理解为什么我们得到这个代码的输出:
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延长酒吧。 $ myfoo是Foo类的对象。 Foo没有一个叫做test()的方法,所以它从它的父Bar扩展它。但是为什么test()的结果是
Bar::testPrivate
Foo::testPublic
你能解释一下,为什么第一个不是Foo :: testPrivate,当这个父母的方法被覆盖在孩子中?
提前非常感谢!
本文解析了为何在继承Bar的Foo类中,调用test()方法会输出Bar::testPrivate和Foo::testPublic。重点在于理解面向对象继承中方法覆盖和默认调用的原理。

7410

被折叠的 条评论
为什么被折叠?



