Почему недоступно свойство у наследника? Ребят, помогите разобраться. Почему у наследника не видно переменную "год".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
132 +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 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир