⊗ppOpFnMt 64 of 107 menu

Abstraktne metode v OOP v PHP

Abstraktni razredi lahko vsebujejo tudi abstraktne metode. Te metode ne smejo imeti implementacije, namenjene so temu, da označijo, da morajo takšne metode imeti njihovi potomci. Dejansko implementacijo teh metod je naloga potomcev.

Za razglasitev metode za abstraktno, je treba pri njeni deklaraciji napisati ključno besedo abstract.

Poskusimo v praksi. Predpostavimo, da morajo vsi potomci razreda User imeti metodo increaseRevenue.

Ta metoda mora vzeti trenutni dohodek uporabnika in ga povečati za določeno vrednost, posredovano kot parameter.

Sam razred User ne ve, kakšen točno dohodek bo imel njegov potomec - saj je za zaposlenega to plača, za študenta pa štipendija. Zato bo vsak potomec to metodo implementiral na svoj način.

Bistvo je v tem, da abstraktna metoda razreda User prisili programerja, da implementira to metodo v potomcih, sicer bo PHP izdal napako. Tako vi ali drug programer, ki dela z vašo kodo, ne boste mogli pozabiti implementirati potrebne metode v potomcu.

Torej, poskusimo v praksi. Dodajmo abstraktno metodo increaseRevenue v razred User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Abstraktna metoda brez telesa: abstract public function increaseRevenue($value); } ?>

Naj naš razred Employee za zdaj ostane nespremenjen. V tem primeru, tudi če ne ustvarimo objekta razreda Employee, ampak samo zaženemo kodo, v kateri so definirani naši razredi, - bo PHP izdal napako.

Zdaj pa napišimo implementacijo metode increaseRevenue v razredu Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Napišimo implementacijo metode: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Preverimo del našega razreda:

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

Implementirajmo metodo increaseRevenue tudi v razredu Student. Le da bo sedaj naša metoda povečala štipendijo:

<?php class Student extends User { private $scholarship; // štipendija public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Metoda poveča štipendijo: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Dodajte v vaš razred User enako abstraktno metodo increaseRevenue. Napišite implementacijo te metode v razredih Employee in Student.

V razredu Figure naredite abstraktne metode za pridobitev površine in obsega figure.

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
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni