⊗ppOpFnMt 64 of 107 menu

Apstraktne metode u OOP-u u PHP-u

Apstraktne klase takođe mogu sadržati apstraktne metode. Takve metode ne bi trebalo da imaju implementaciju, već služe da naznače da takve metode moraju postojati kod naslednika. A sama implementacija tih metoda - već je zadatak naslednika.

Da bi se metoda deklarisala kao apstraktna, pri njenoj deklaraciji treba napisati ključnu reč abstract.

Hajde da probamo u praksi. Pretpostavimo, da svi naslednici klase User treba da imaju metodu increaseRevenue.

Ova metoda treba da uzme trenutni prihod korisnika i da ga poveća za određenu vrednost, proslednu kao parametar.

Sama klasa User ne zna, kakav tačno prihod će naslednik imati - jer kod zaposlenog to je plata, a kod studenta - stipendija. Zato će svaki naslednik implementirati ovu metodu na svoj način.

Suština je u tome što apstraktna metoda klase User primorava programera da implementira ovu metodu u naslednicima, inače će PHP prijaviti grešku. Tako vi, ili drugi programer, koji radi sa vašim kodom, nikako nećete moći da zaboravite da implementirate potrebnu metodu u nasledniku.

Dakle, hajde da probamo u praksi. Dodajmo apstraktnu metodu increaseRevenue u klasu User:

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

Neka naša klasa Employee za sada ostane bez izmena. U ovom slučaju, čak i ako ne kreiramo objekat klase Employee, već samo pokrenemo kod u kojem se definišu naše klase, - PHP će prijaviti grešku.

Sada hajde da napišemo implementaciju metode increaseRevenue u klasi Employee:

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

Proverimo rad naše klase:

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

Implementirajmo metodu increaseRevenue i u klasi Student. Samo što će sada naša metoda povećavati već stipendiju:

<?php class Student extends User { private $scholarship; // stipendija public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Metoda povećava stipendiju: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Dodajte u vašu klasu User istu apstraktnu metodu increaseRevenue. Napišite implementaciju ove metode u klasama Employee i Student.

U klasi Figure napravite apstraktne metode za dobijanje površine i obima figure.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij