Почему при наследовании получаются два разных результата от вида доступа к свойству?

Есть простой код:

class Test {
    private $var;
    
    public function setMe($value) {
        $this->var = $value;
    }
    
    public function getMe() {
        return $this->var;
    }
}

class More extends Test {
    public $var;
}


$oTest = new Test;
$oMore = new More;

$oTest->setMe('foo');
$oMore->setMe('bar');
var_dump($oMore->var);
echo $oMore->getMe();
echo $oTest->getMe();

Результат вывода будет: NULL bar foo

Вопрос: почему при обращении к свойству $oMore->var там NULL, а при доступе через метод getMe - там значение bar, которое пытались установить через setMe? Ведь логично было бы иметь либо NULL и там и там, либо bar. Не понимаю логики.

И почему при $oMore->var значение NULL? Почему наследник не использует в этом случае сеттер для установки значения в свойство своего класса?


Ответы (0 шт):