Итак, это последний мучительный вопрос о наследовании, который у меня возник в течение некоторого времени, поэтому я хотел пойти дальше и спросить. Итак, я приведу пример на PHP:
<?php
class Base
{
private $z = 4;
function GetPrivate()
{
echo $this->z;
}
}
class Derived extends Base
{
}
$b = new Base();
$d = new Derived();
$d->GetPrivate();
?>
Достаточно просто. Когда я всегда читал о наследовании, объяснение было просто «вы наследуете общедоступные и защищенные члены», и все. Чего я не понимаю, так это пары вещей о том, как интерпретатор в этом примере определяет, что и чему принадлежит.
Например, при создании производного класса я могу использовать общедоступную функцию «GetPrivate» Базы, чтобы получить частные переменные базового класса.Однако простое определение наследования для меня не работает. Я имею в виду, что я наследую метод GetPrivate, но у меня все еще есть какая-то ссылка на частные переменные только из того метода, который принадлежал базовому классу (даже если $ this относится к объекту производного класса). Я не мог создать новую функцию в классе Derived для доступа к этим частным переменным.
Таким образом, отслеживает ли интерпретатор, какие функции были унаследованы от базового класса, и возможные связи, которые они содержат с частными членами, доступными только для этого базового класса?