⊗ppOpFnCl 63 of 107 menu

Abstraktní třídy v OOP v PHP

Předpokládejme, že máte třídu User, od které dědí třídy Employee a Student.

Přičemž se předpokládá, že budete vytvářet objekty tříd Employee a Student, ale objekty třídy User - nebudete, protože tato třída se používá pouze pro seskupování společných vlastností a metod svých dědiců.

V tomto případě lze násilně zakázat vytvářet objekty třídy User, aby vy nebo jiný programátor někde náhodou nevytvořili.

Pro toto existují takzvané abstraktní třídy. Abstraktní třídy představují třídy, určené pro dědění od nich. Přitom objekty takových tříd nelze vytvořit.

Pro to, aby byla třída deklarována jako abstraktní, je třeba při její deklaraci napsat klíčové slovo abstract:

<?php abstract class User { } ?>

Takže, pojďme napsat implementaci abstraktní třídy User. Předpokládejme, že bude mít privátní vlastnost name, a také gettery a settery pro ni:

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

Pokus o vytvoření objektu třídy User vyvolá chybu:

<?php $user = new User; // vypíše chybu ?>

Ale dědit od naší třídy bude možné. Vytvořme třídu Employee, která bude dědit od naší abstraktní třídy User:

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

Vytvořme objekt třídy Employee - vše bude fungovat:

<?php $employee = new Employee; $employee->setName('john'); // metoda rodiče, tj. třídy User $employee->setSalary(1000); // vlastní metoda, tj. třídy Employee echo $employee->getName(); // vypíše 'john' echo $employee->getSalary(); // vypíše 1000 ?>

Vytvořte abstraktní třídu Figure, představující geometrický tvar. Ať od ní dědí třídy pro kruh, obdélník a čtverec.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout