Почему недоступно свойство у наследника? Ребят, помогите разобраться. Почему у наследника не видно переменную "год".class Class1{

protected $year = 1;

public function setYear($year){
$this->year = $year;
}

}
class Class2 extends Class1{

public function getYear(){
return $this->year;
}

}
$class1 = new Class1();
$class1->setYear(2018);
$class2 = new Class2();
echo $class2->getYear(); //NULL

21 Авг 2019 в 06:59
119 +1
0
Ответы
1

Ваша проблема заключается в том, что переменная $year в классе Class1 объявлена как protected, что означает, что она доступна только внутри класса и его наследников. Однако, вы пытаетесь получить доступ к этой переменной извне класса Class2 в методе getYear().

Чтобы исправить эту проблему, вы можете изменить модификатор доступа переменной $year на public в классе Class1. Таким образом, переменная будет доступна и извне класса и ее наследников.

class Class1{
public $year = 1;
public function setYear($year){
$this->year = $year;
}
}
class Class2 extends Class1{
public function getYear(){
return $this->year;
}
}
$class1 = new Class1();
$class1->setYear(2018);
$class2 = new Class2();
echo $class2->getYear(); // 2018

После внесения указанных изменений ваш код должен работать корректно и вы сможете получить доступ к переменной $year из класса Class2.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир