⊗ppOpFnCl 63 of 107 menu

Апстрактне класе у ООП у PHP

Претпоставимо да имате класу User, а од њега наслеђују класе Employee и Student.

При томе се претпоставља да ћете креирати објекте класа Employee и Student, али објекте класе User - нећете, јер се ова класа користи само за груписање заједничких својстава и метода својих наследника.

У овом случају можете присилно забранити креирање објеката класе User, како ви или други програмер негде случајно не бисте их креирали.

За ово постоје такозване апстрактне класе. Апстрактне класе представљају класе намењене за наслеђивање од њих. При томе објекте таквих класа није могуће креирати.

Да би се класа прогласила апстрактном, потребно је при њеном проглашењу написати кључну реч abstract:

<?php abstract class User { } ?>

Дакле, хајде да напишемо имплементацију апстрактне класе User. Нека има приватно својство name, као и гетере и сетере за њега:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } } ?>

Покушај креирања објекта класе User ће изазвати грешку:

<?php $user = new User; // даће грешку ?>

Али наслеђивање од наше класе ће бити могуће. Направимо класу Employee, која ће наслеђивати од наше апстрактне класе User:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } } ?>

Креирајмо објекат класе Employee - све ће радити:

<?php $employee = new Employee; $employee->setName('john'); // метод родитеља, тј. класе User $employee->setSalary(1000); // сопствени метод, тј. класе Employee echo $employee->getName(); // исписаће 'john' echo $employee->getSalary(); // исписаће 1000 ?>

Направите апстрактну класу Figure, која представља геометријску фигуру. Нека од ње наслеђују класе за круг, правоугаоник и квадрат.

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