⊗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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј