⊗ppOpIhCn 30 of 107 menu

Конструктор при наследяване в ООП в PHP

При наследяване е възможно да се предефинира конструкторът на родителя. Нека разгледаме един пример. Да предположим, че имаме следния родителски клас:

<?php class User { private $name; private $surn; public function __construct($name, $surn) { $this->name = $name; $this->surn = $surn; } public function getName() { return $this->name; } public function getSurn() { return $this->surn; } } ?>

Да предположим, че от родителския клас наследява следният клас:

<?php class Student extends User { } ?>

Да предположим, че в класа-наследник искаме да разширим конструктора, като добавим допълнителни параметри към него:

<?php class Student extends User { private $year; public function __construct($name, $surn, $year) { } } ?>

В този случай е задължително първият ред да извика конструктора на родителя чрез parent::__construct():

<?php class Student extends User { private $year; public function __construct($name, $surn, $year) { parent::__construct($name, $surn); } } ?>

Командата parent::__construct() по същество е конструкторът на родителя. Следователно нека му подадем необходимите параметри:

<?php class Student extends User { private $year; public function __construct($name, $surn, $year) { parent::__construct($name, $surn); } } ?>

Сега в наследника годината на обучение ще я запишем в собственото свойство на наследника:

<?php class Student extends User { private $year; public function __construct($name, $surn, $year) { parent::__construct($name, $surn); $this->year = $year; } } ?>

Нека направим гетър за годината на обучение:

<?php class Student extends User { private $year; public function __construct($name, $surn, $year) { parent::__construct($name, $surn); $this->year = $year; } public function getYear() { return $this->year; } } ?>

Да предположим, че класът Employee наследява от класа User от този урок.

Предефинирайте в класа Employee конструктора на родителя, като добавите към него параметър за възраст и заплата.

Направете гетъри за възрастта и заплатата.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне