Baština je važan koncept objektno orijentiranog programiranja. Pruža način za objekti definirati odnose jedni s drugima. Kao što ime sugerira, objekt može naslijediti karakteristike od drugog objekta.
Konkretnije rečeno, objekt je u stanju prenijeti svoje stanje i ponašanje svojoj djeci. Da bi nasljedstvo uspjelo, objekti moraju imati zajedničke osobine jedno s drugim.
U Java, nastava se može uzimati iz drugih razreda, može se uzimati i od drugih, i tako dalje. To je zato što oni mogu naslijediti značajke iz klase koja se nalazi iznad nje, sve do najviše klase objekata.
Primjer Java nasljeđivanja
Recimo da pravimo klasu koja se zove Human koja predstavlja naše fizičke karakteristike. To je generička klasa koja bi mogla predstavljati tebe, mene ili bilo koga na svijetu. Njegova država prati stvari poput broja nogu, broja ruku i krvne grupe. Ima ponašanja poput jedenja, spavanja i hodanja.
Čovjek je dobar za dobivanje sveukupnog razumijevanja onoga što nas čini istima, ali na primjer, ne može mi govoriti o spolnim razlikama. Za to bismo trebali napraviti dva nova tipa klase pod nazivom Muškarac i Žena. Stanje i ponašanje ove dvije klase razlikovat će se međusobno na mnogo načina, osim onih koje nasljeđuju od čovjeka.
Dakle, nasljeđivanje nam omogućava da u svom djetetu obuhvatimo stanje i ponašanje roditeljske klase. Dječji razred tada može proširiti stanje i ponašanja kako bi odražavao razlike koje predstavlja. Najvažniji aspekt ovog koncepta koji treba zapamtiti je da je dječja klasa specijaliziranija verzija roditelja.
Što je superrazred?
U odnosu između dva objekta, superklasa je ime koje se daje klasi iz koje se nasljeđuje. Zvuči kao super duper klasa, ali zapamtite da je riječ o općenitijoj verziji. Bolja imena koja se koriste mogu biti osnovna klasa ili jednostavno nadređena klasa.
Da bismo ovaj put uzeli primjereniji stvarni svijet, mogli bismo imati nadmoć nazvan Person. Njegova država sadrži ime osobe, adresu, visinu i težinu te se ponaša poput odlaska u kupovinu, kreveta i gledanja televizije.
Mogli bismo napraviti dvije nove klase koje nasljeđuju od Osobe pod nazivom Student and Worker. Oni su više specijalizirane verzije jer, iako imaju imena, adrese, gledaju TV i idu u kupovinu, imaju i karakteristike koje se razlikuju jedna od druge.
Radnik može imati državu koja ima naziv zaposlenja i mjesto zaposlenja, dok student može imati podatke o području studija i ustanovi učenja.
Primjer super klase:
Zamislite da definirate klasu osobe:
Osoba iz javne klase. { }
Proširenjem ove klase može se stvoriti nova klasa:
Zaposleni u javnoj klasi produžuje osobu. { }
Kaže se da je klasa Person viši razred klase zaposlenika.
Što je podrazred?
U odnosu između dva objekta podrazred je ime koje se daje klasi koja nasljeđuje od nadklase. Iako zvuči malo crtački, imajte na umu da je riječ o specijaliziranijoj verziji superklase.
U prethodnom su primjeru Student i Worker potklasa.
Podklase mogu biti poznate i kao izvedeni razredi, podučavanja ili produženi razredi.
Koliko podrazreda mogu imati?
Možete imati onoliko podklasa koliko želite. Nema ograničenja koliko potklasa može imati superklasa. Isto tako, ne postoji ograničenje broja stupnja nasljeđivanja. Hijerarhija klasa može se graditi na određenom području zajedničkog.
U stvari, ako pogledate biblioteke Java API-ja vidjet ćete mnogo primjera nasljeđivanja. Svaka klasa u API-ima naslijeđena je iz klase koja se zove java.lang. Objekt. Na primjer, svaki put kada koristite JFrame objekt, na kraju ste dugog nasljeđivanja:
java.lang. Objekt. produženo java.awt. Komponenta. produženo java.awt. Kontejnera. produženo java.awt. Prozor. produženo java.awt. Frame. produženo javax.swing. JFrame.
U Javi, kada podklasa nasljeđuje od nadklase, ona je poznata kao "produljenje" nadrazreda.
Može li se moj podklasa naslijediti iz mnogih super klasa?
Ne. U Javi, podrazred može proširiti samo jedan superrazred.
Zašto koristiti nasljeđivanje?
Nasljeđivanje omogućuje programerima da ponovo upotrebe kod koji su već napisali. U primjeru Ljudske klase, ne moramo stvarati nova polja u klasi Muškarac i Žena kako bismo držali krvnu grupu jer možemo koristiti ono naslijeđeno iz ljudske klase.
Još jedna prednost korištenja nasljeđivanja je ta što nam dopušta da tretiramo podrazred kao da je superklasa. Na primjer, recimo da je program stvorio više primjera objekata Muškarac i Žena. Program će možda morati pozvati ponašanje mirovanja za sve ove objekte. Budući da je ponašanje spavanja ponašanje ljudskog superklasa, možemo grupirati sve muškarce i žene zajedno i tretirati ih kao ljudske predmete.