class Bar{
public function test(){
$this->testPublic();
$this->testPrivate();
}
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::testPublic
//Bar::testPrivate
Run Code Online (Sandbox Code Playgroud)
我在理解这个输出时遇到了很多麻烦.有人能够给我一个明确的简洁解释是什么吗?我正在学习OOP,并想知道如何使用扩展来覆盖父类函数.
该test()方法调用2个方法:
testPublic- 它是一个公共的,所以它被覆盖了Foo.所以Foo::testPublic被称为testPrivate - 它是一个私人的,所以它只对每个类本身可见.对于调用者方法(它Bar) - 它是一个Bar::testPrivate所以 - 如果方法是public或protected- 它可以被覆盖并从祖先/孩子调用; 如果它private- 它不能.