Объектно-ориентированное PHP-программирование

Я пытаюсь реализовать код, подобный приведенному ниже, но не в состоянии понять одну проблему, согласно моему пониманию, она должна была напечатать данные следующим образом:

Foo::testPrivate
Foo::testPublic

Но его вывод выводится как ::

Bar::testPrivate
Foo::testPublic

Код является ::

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();

Может кто-нибудь объяснить это?

0

Решение

Согласно моему пониманию

  • Вывод вывод прав, потому что вы создали объект класса «Foo», а затем после вызова test () функция находится внутри класса «Bar»

  • В test () функцией класса Bar является вызов testPrivate () с использованием ключевого слова «this», поэтому вызов функции в том же классе и testPrivate () также является закрытым, поэтому выводим результат, например:

Бар :: testPrivate
Foo :: testPublic

  • Внести изменения в приватная функция testPrivate () {} чтобы публичная функция testPrivate () в обоих классах для отображения вашего принятого результата
  • Результат после внесенных изменений:

Foo :: testPrivate
Foo :: testPublic

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector