⊗ppOpFnMt 64 of 107 menu

Abstraktné metódy v OOP v PHP

Abstraktné triedy môžu obsahovať aj abstraktné metódy. Takéto metódy by nemali mať implementáciu, ale slúžia na to, aby určili, že takéto metódy musia mať potomkovia. A samotná implementácia týchto metód - je už úlohou potomkov.

Na to, aby sme deklarovali metódu ako abstraktnú, pri jej deklarácii musíme napísať kľúčové slovo abstract.

Skúsme to v praxi. Predpokladajme, že všetci potomkovia triedy User musia mať metódu increaseRevenue.

Táto metóda by mala zobrať aktuálny príjem používateľa a zvýšiť ho o určitú hodnotu, odovzdanú ako parameter.

Samotná trieda User nevie, aký presne príjem bude mať potomok - veď u zamestnanca je to plat, a u študenta - štipendium. Preto každý potomok bude implementovať túto metódu inak.

Podstata je v tom, že abstraktná metóda triedy User núti programátora implementovať túto metódu v potomkoch, inak PHP vyhodí chybu. Takto vy, alebo iný programátor, ktorý pracuje s vaším kódom, v žiadnom prípade nemôžete zabudnúť implementovať požadovanú metódu v potomkovi.

Poďme to vyskúšať v praxi. Pridajme abstraktnú metódu increaseRevenue do triedy User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Abstraktná metóda bez tela: abstract public function increaseRevenue($value); } ?>

Nechajme našu triedu Employee zatiaľ bez zmien. V tomto prípade, aj keď nevytvoríme objekt triedy Employee, ale iba spustíme kód, v ktorom sú definované naše triedy - PHP vyhodí chybu.

Teraz napíšme implementáciu metódy increaseRevenue v triede Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Napíšme implementáciu metódy: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Skontrolujme fungovanie našej triedy:

<?php $employee = new Employee; $employee->setName('john'); $employee->setSalary(1000); $employee->increaseRevenue(100); echo $employee->getSalary(); ?>

Implementujme metódu increaseRevenue aj v triede Student. Lenže teraz naša metóda bude zvyšovať už štipendium:

<?php class Student extends User { private $scholarship; // štipendium public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Metóda zvyšuje štipendium: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Pridajte do vašej triedy User rovnakú abstraktnú metódu increaseRevenue. Napíšte implementáciu tejto metódy v triedach Employee a Student.

V triede Figure vytvorte abstraktné metódy na získanie obsahu a obvodu útvaru.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť