@sergik15828

Доступ к измененному свойству родительского класса?

Сразу извиняюсь за возможно тупой вопрос, только начинаю изучать ооп.
class A {

	protected $age = 5;
	
	public function get() {
		$this->age = 10;
		
		$b = new B();
	}
}

class B extends A {
	public function __construct() {
		echo $this->age;
	}
}

$a = new A();
$a->get();


В методе get() класса A мы изменили свойство $age на 10, однако при вызове данное изменение игнорируется. При чем если использую статические свойства, все получается
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
$b = new B();

Вы создали новый экземпляр класса. В нем начальное значение - 5. А свойство изменили у уже существующего экземпляра.
К тому же метод get переопределяется в классе B, и при вызове $b->get() всегда вернется начальное значение.

Продолжайте изучать. Пока даже понимания нет.

Если вам нужно дернуть родительский метод

class A {
    protected $age = 5;
    public function get() {
        $this->age = 10;
    }
}

class B extends A {
    public function get() {
        parent::get();
        echo $this->age;
    }
}

$obj = new B();
$obj->get(); // 10
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
В методе get() класса A мы изменили свойство $age на 10, однако при вызове данное изменение игнорируется

1) Как вы это узнали? )
2) Путаете понятия класса и объекта (экземпляра класса).
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
vrrcvqiy17x51.png
Как раз картинка в тему. Ну почти.

$b - это совершенно отдельный объект, который ничего не знает, что происходит в $a
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы