⊗ppOpFnCl 63 of 107 menu

Apstraktne klase u OOP u PHP

Pretpostavimo da imate klasu User, a od nje nasleđuju klase Employee i Student.

Pri tome se pretpostavlja da ćete kreirati objekte klasa Employee i Student, ali objekte klase User - nećete, pošto se ova klasa koristi samo za grupisanje opštih svojstava i metoda svojih naslednika.

U ovom slučaju možemo prinudno zabraniti kreiranje objekata klase User, kako vi ili drugi programer negde slučajno ne biste ih kreirali.

Za ovo postoje takozvane apstraktne klase. Apstraktne klase predstavljaju klase namenjene nasleđivanju od njih. Pri tome objekte takvih klasa ne možemo kreirati.

Da bismo deklarisali klasu kao apstraktnu, potrebno je prilikom njene deklaracije napisati ključnu reč abstract:

<?php abstract class User { } ?>

Dakle, hajde da napišemo implementaciju apstraktne klase User. Neka ima privatno svojstvo name, kao i getere i setere za njega:

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

Pokušaj kreiranja objekta klase User će izazvati grešku:

<?php $user = new User; // izbaciće grešku ?>

A nasleđivanje od naše klase će biti moguće. Napravimo klasu Employee, koja će nasleđivati od naše apstraktne klase User:

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

Kreirajmo objekat klase Employee - sve će raditi:

<?php $employee = new Employee; $employee->setName('john'); // metod roditelja, tj. klase User $employee->setSalary(1000); // sopstveni metod, tj. klase Employee echo $employee->getName(); // ispisaće 'john' echo $employee->getSalary(); // ispisaće 1000 ?>

Napravite apstraktnu klasu Figure, koja predstavlja geometrijsku figuru. Neka od nje nasleđuju klase za krug, pravougaonik i kvadrat.

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