Наследование под капотом

Итак, это последний мучительный вопрос о наследовании, который у меня возник в течение некоторого времени, поэтому я хотел пойти дальше и спросить. Итак, я приведу пример на 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 для доступа к этим частным переменным.

Таким образом, отслеживает ли интерпретатор, какие функции были унаследованы от базового класса, и возможные связи, которые они содержат с частными членами, доступными только для этого базового класса?

6
задан Ilya 20 August 2010 в 09:34
поделиться