Как реализовать наследование свойства? Есть два класса: Parent и Child. Child унаследует свойства и методы родителя. В родителе есть одно свойство, которое инициализируется при создании объекта класса. В дальнейшем, в родителе, я создаю объект "ребенка".class Parent { protected $var = 0; public function __construct($var=100) { $this->var = $var; } protected function say() { echo $this->var; } } class Child extends Parent { public function __construct() { $this->say(); } } В общем, при создании объекта класса Child выводится 0, а нужно 100.
Для того чтобы при создании объекта класса Child выводилось значение 100, необходимо вызвать конструктор родителя явно при помощи ключевого слова parent:: в конструкторе класса Child.
Вот исправленный код:
class Parent { protected $var = 0; public function __construct($var=100) { $this->var = $var; } protected function say() { echo $this->var; } } class Child extends Parent { public function __construct() { parent::__construct(); //вызываем конструктор родителя $this->say(); } } // создаем объект класса Child $child = new Child(); // на экран выведется 100
Теперь при создании объекта класса Child будет выводиться значение 100, так как конструктор родительского класса будет вызван в конструкторе класса Child.
Для того чтобы при создании объекта класса Child выводилось значение 100, необходимо вызвать конструктор родителя явно при помощи ключевого слова parent:: в конструкторе класса Child.
Вот исправленный код:
class Parent {protected $var = 0;
public function __construct($var=100) {
$this->var = $var;
}
protected function say() {
echo $this->var;
}
}
class Child extends Parent {
public function __construct() {
parent::__construct(); //вызываем конструктор родителя
$this->say();
}
}
// создаем объект класса Child
$child = new Child(); // на экран выведется 100
Теперь при создании объекта класса Child будет выводиться значение 100, так как конструктор родительского класса будет вызван в конструкторе класса Child.