Home FORUM Toplista HTML CSS JavaScript PHP DIZAJN SEO Mapa |
![]() |
![]() |
![]() |
![]() |
![]() |
NasledjivanjeRezervisana reč extends govori da će klasa biti potklasa druge klase. Klasa po imenu B, koja nasledjuje klasu A, pravi se na sledeći način:
Ako se klasa A definiše na sledeći način:
Sledeći iskazi za pristup operacijama i atributima objekta tipa B su ispravni:
Obzirom da klasa B proširuje (nasledjuje) klasu A, možete upotrebiti funkciju operacija1 i atribut $atribut1 iako su oni deklarisani u klasi A. Kao potklasa klase A klasa B nasledjuje funkcionalnost i podatke. Osim toga, klasa B je deklarisala i sopstveni atribut i operaciju. Treba imati u vidu da nasledjivanje funkcioniše samo u jednom smeru. Potklasa može naslediti karakteristike od svakog pretka, odnosno nadklase, dok predak ne nasledjuje karakteristike potomka. To znači da poslednja dva reda sledećeg koda nisu ispravni:
Klasa A nema funkciju operacija2, ni atribut $atribut2. Prikazali smo potklasu koja deklariše nove atribute i operacije. Ispravno je, i po nekad korisno deklarisati iste atribute i operacije kao u nadklasi. To se može uraditi da bi se nekom atributu u potklasi dala drugačija vrednost u odnosu na isti atribut u natklasi ili da bi se operaciji u potklasi promenila funkcionalnost u odnosu na istu operaciju u natklasi. Promena funkcionalnosti u potklasi je redefinisanje. Ako je na primer klasa A sledeće:
I želite da promenite podrazumevanu vrednost atributa $atribut i promenite funkcionalnost operacije operacija tada klasu B, koja definiše taj atribut i tu operaciju, možete da napravite na sledeći način:
Deklarisanje klase B ne utiče na prvobitnu definiciju klase A. Pogledajte naredna dva reda:
Napravili ste objekat tipa A i pozvali njegovu funkciju operacija. To ispisuje:
Nesto Ovo dokazuje da time što ste napravili B niste izmenili A. Ako napravite objekat tipa B, dobićete drugačiji rezultat:
Daje:
Nesto drugo Isto kao što dodavanje atributa ili operacija u potklasi ne utiče na natklasu, tako i redefinisanje atributa i operacija u potklasi ne utiče na natklasu. Potklasa će naslediti sve atribute i operacije natklase ako ih ne zamenite. Ako redefinišete atribute ili operacije one zamenjuju prvobitne definicije. Za razliku od drugih jezika PHP ne dozvoljava da redefinišete funkciju, a da i dalje pozivate verziju definisanu u natklasi. Nasledjivanje može da se nastavi u više slojeva. Možete definisati klasu C, koja proširuje klasu B, pa samim tim nasledjuje od nje i njenog pretka, klasu A. Pri tome klasa C može da redefiniše atribute i operacije natklase i doda nove. Pojedini objektno orjentisani programski jezici podržavaju višestruko nasledjivanje, ali ne i PHP. To znači da klasa može da nasledjuje samo jednog pretka. Broj potomaka koji mogu da nasledjuju tog pretka nije ograničen. |
![]() |
Copyright © 2010 BUbaj. Powered By bubaj.com |
PHP PHP sintaksa Fajl Niz String Funkcija Objektno programiranje MySQL Unos fajla Datum Forme Sesija Registracija |