Nasljeđivanje je jedan od temeljnih koncepata objektno orijentiranog programiranja. U programiranju riječ nasljeđivanje predstavlja odnos u kojem podređena klasa preuzima stanje i ponašanje roditeljske klase.

Svrha nasljeđivanja u razvoju softvera je olakšati ponovnu upotrebu sigurnog i pouzdanog softvera. Jedna od glavnih prednosti korištenja nasljeđivanja je ta što uklanja suvišni kôd u vašim programima.

Kako djeluje nasljeđivanje

Ideja nasljeđivanja je da mnoge klase ili objekti imaju neke od istog skupa atributa i metoda. Stoga, u duhu proizvodnje pouzdanog softvera, nove klase sada mogu crpiti iz već postojećih povezanih klasa i ako je potrebno proširiti na postojeća stanja i ponašanja.

Stvarni primjer kako nasljeđivanje funkcionira bio bi razmatranje plodova. Ovo je široka oznaka koja služi za uvrštavanje niza različitih predmeta.

Jabuka je voće, a naranča također. Međutim, naranča nije jabuka, pa ako biste posjedovali trgovinu, ne biste imali voće kao jedan od zaliha. Možda biste u svom inventaru mogli imati odjeljak s voćem, a ispod tog odjeljka imali biste konkretnije predmete poput jabuka i naranči.

instagram viewer

Tako funkcionira nasljeđivanje.

Korištenje nasljeđivanja u Javi

Nasljeđivanje se može koristiti u bilo kojem programskom jeziku koji koristi objektno orijentirana paradigma programiranja. Međutim, točan način na koji se nasljeđivanje koristi ovisi o određenom programskom jeziku.

Na primjer, C ++ je također objektno orijentirani programski jezik. C ++ podržava ono što je poznato kao višestruko nasljeđivanje, dok Java podržava samo jedno nasljeđivanje.

To znači da u Javi roditeljska klasa može imati mnogo podređenih klasa, ali svaka podređena klasa može imati samo jednu roditeljsku klasu (jedno nasljeđivanje). Međutim, postoji način da se u Javi postigne neizravno višestruko nasljeđivanje stvaranjem odnosa baka, roditelj i dijete.

Stvaranje roditeljske klase u Javi

Proces odabira roditeljske klase iz dokumenta softverskih zahtjeva poznat je pod nazivom objektno orijentirana analiza. Tijekom ovog postupka izraz "je a" često se koristi za identificiranje mogućih odnosa nasljeđivanja. Crpeći iz našeg gornjeg primjera, mogli biste vidjeti da bi voće bilo naš roditeljski razred.

Primjer klase roditelja voća


voće javne klase {
// Izjava varijable
zaštićeno sjeme niza;
zaštićena String skinColor;
zaštićeni gudački okus;
// Zadani konstruktor
javno voće () {
sjeme = "";
skinColor = "";
okus = "";
}
// Primarni konstruktor
javno voće (sjeme žica, boja kože ljuske, okus žica) {
this.seed = sjeme;
this.skinColor = boja kože;
ovo.kus = okus;
}
// geteri i postavljači
javni String getSeed () {
vratiti sjeme;
}
javna praznina setSeed (niz sjemena) {
this.seed = sjeme;
}
javni String getSkinColor () {
povratak skinColor;
}
javna praznina setSkinColor (String skinColor) {
this.skinColor = boja kože;
}
javni String getTaste () {
vratiti okus;
}
public void setTaste (gudački ukus) {
ovo.kus = okus;
}
// metoda jesti
javna praznina eat () {
// opći kod kako jesti voće
}
// metoda soka
javni void sok () {
// opći kod kako sočiti voće
}
}

Jedan od najistaknutijih aspekata gore navedene roditeljske klase je modifikator pristupa koji se koristi sa svakom deklaracijom varijable. Modifikator "zaštićenog" pristupa idealan je za upotrebu u roditeljskim klasama jer sprečava ne-podređene klase da dobiju pristup atributima podataka nadređene klase.

Dalje u kodu upoznajete se s konstruktorima, geterima i postavljačima koji su općeniti gradivni blokovi za bilo koju Java klasu. Na kraju, upoznali ste se s dvije metode (sok i jesti) koje su stvorene u roditeljskoj klasi našeg programa jer su univerzalne za sve voće - sve voće može se jesti i sočiti.

Stvaranje dječje nastave na Javi

Dijete klase obično se nazivaju specijaliziranim ili izvedenim klasama jer nasljeđuju stanje i ponašanje roditelja i često prilagođavaju ove atribute kako bi bili precizniji.

Nastavljajući s našim primjerom, trebali biste znati zašto bi naranča bila prikladna dječja klasa gore navedene klase voća.

Primjer narančaste djece


javna klasa Orange proširuje voće {
// promjenljiva deklaracija
privatni int supremes;
// zadani konstruktor
javna narančasta () {
supremes = 0;
}
// primarni konstruktor
javna narančasta (sjeme niza, boja kože niza, okus niza, int supremes) {
super (sjeme, boja kože, okus);
this.supremes = supremes;
}
// geteri i postavljači
javni int getsupremes () {
return supremes;
}
public void setsupremes (int supremes) {
this.supremes = supremes;
}
// metoda jesti
javna praznina eat () {
// kako jesti naranču
}
// metoda soka
javni void sok () {
// kako sok i naranča
}
// metoda ljuštenja
javna korekcija praznine () {
// kako oguliti naranču
}
}

Postoji razlika između izgleda uobičajene deklaracije Java klase i onoga što imamo u gornjem kodu. Ključna riječ "extends" koristi se u Javi kako bi se omogućilo nasljeđivanje.

U našem primjeru iznad dječji razred (narančasta) proširuje roditeljski razred (voće). Stoga stanju i ponašanju klase voća sada može pristupiti i izmijeniti ih klasa naranče.

Jedinstveni atribut koji ima naša narančasta klasa identificiran je s promjenjivim imenom supremes (što je službeni naziv za male segmente pronađene u narančama). Tu nastupa specijalizacija; nemaju sva voća supreme, ali sve naranče imaju, pa je rezerviranje varijable supremes za klasu naranče logično.

Dodavanje metode "kore" postojećim metodama "jesti" i "sok" također je logično jer iako se sve voće ne može oguliti, naranče se često gule.

Imajte na umu da ih, ako ne namjeravamo mijenjati postojeće metode "jesti" i "sok", ne bismo trebali uključiti u naš razred naranče. Metode u klasi naranče nadjačavaju bilo koju sličnu metodu u klasi voća. Dakle, kad bi se sve voće jelo i sokovalo na isti način, ne bismo trebali stvarati ove metode u klasi naranče.

Konstruktori uloga igraju se u nasljeđe

Prema zadanim postavkama konstruktori roditeljske klase nasljeđuju se podređenim klasama. Stoga, ako se kreira objekt podređene klase, to znači da se objekt nadređene klase također kreira automatski.

Vraćajući se našem primjeru, svaki put kad se stvori novi narančasti objekt stvori se i voćni objekt jer je naranča voće.

Iza kulisa, kada se kreira objekt podređene klase, prvo se poziva konstruktor roditeljske klase, a zatim konstruktor podređene klase. U našoj gore navedenoj narančastoj klasi, ako se kreira narančasti objekt bez ikakvih parametara, pozvat će se naš zadani konstruktor klase voća, a potom i zadani dobavljač klase naranče.

Metoda "super" u našem primarnom konstruktoru iznad je neophodna jer određuje da je primarni konstruktor - i ne zadani konstruktor - roditeljske klase voća treba pozvati kad god je narančasti objekt s parametrima stvorena.

Sada možete koristiti nasljeđivanje u Javi

Iz ovog članka mogli ste saznati što je nasljeđivanje, kako ono funkcionira i zašto je to tako važan koncept u programiranju. Sada možete stvoriti odnose nasljeđivanja pomoću programskog jezika Java. Nadalje, sada znate kako zaobići pravilo jedinstvenog nasljeđivanja Java stvaranjem veze bake i djeda.

Zasluga za sliku: Andreas Wohlfahrt /Pekseli

E-mail
Kako nasljeđivanjem organizirati svoj objektno orijentirani kod

Ispravnost objektno orijentiranog programiranja znači da morate znati o nasljeđivanju i kako to može pojednostaviti kodiranje i smanjiti pogreške.

Pročitajte Dalje

Povezane teme
  • Programiranje
  • Java
  • Objektno orijentirano programiranje
O autoru
Kadeisha Kean (Objavljeni su 3 članka)

Kadeisha Kean je programerica softvera u cijeloj tehnologiji i pisac tehničkih / tehnoloških tehnologija. Ona ima izrazitu sposobnost pojednostavljenja nekih od najsloženijih tehnoloških koncepata; proizvodeći materijal koji lako može razumjeti bilo koji tehnološki novak. Zaljubljena je u pisanje, razvoj zanimljivog softvera i putovanja svijetom (kroz dokumentarne filmove).

Više od Kadeishe Kean

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Još jedan korak…!

Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.

.