Я не понял, почему первый вывод кода печатает «bar :: testprivate», так как мы называем метод испытаний родительского класса с использованием экземпляра подкласса. Следует вызовать метод тестового процесса суб -класса, следовательно, печатает «foo :: testprivate», а не «bar :: testprivate». < /p>
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
Подробнее здесь: https://stackoverflow.com/questions/196 ... -in-the-su