what is inheritance java tutorial with examples
Ovaj vodič objašnjava koncept nasljeđivanja u Javi, srodne pojmove poput ključnih riječi 'extends' i 'super', podrazred, superrazred, odnosi Is-A, HAS-A itd.:
Nakon što smo saznali o tri stupa OOP-a, naime, Apstrakcija, Kapsulacija i Polimorfizam u Javi, došli smo do posljednjeg stupa OOP-a, tj. Nasljeđivanja.
Počevši od ovog vodiča, razgovarat ćemo o nasljeđivanju u Javi u sljedećih nekoliko vodiča.
=> Pročitajte seriju Easy Java Training.
Što ćete naučiti:
Nasljeđivanje u Javi
Nasljeđivanje u Javi može se definirati kao tehnika ili postupak u kojem jedan objekt klase stječe ponašanje i svojstva drugog objekta. To se postiže nasljeđivanjem klase ili uspostavljanjem odnosa između dvije klase.
Na primjer, žaba je vodozemac. Poput ostalih životinja iz klase vodozemaca, i Žaba može imati mnoštvo karakteristika koje su zajedničke ostalim životinjama. Dakle, ovdje je vodozemac vrsta, a životinje poput žaba njezini su članovi.
Ako moramo predstaviti vodozemce i njihove članove u softverskom predstavljanju pomoću OOP-a, tada ćemo razviti klasu „Vodozemci“ koja sadrži svojstva ili ponašanje koje je zajedničko vodozemcima općenito.
Na ovaj način ne moramo duplicirati uobičajena svojstva i ponašanje svake životinje vodozemca koju opisujemo. Izravno ćemo stvoriti klasu za životinje vodozemaca i naslijediti iz klase vodozemaca kao što je prikazano u nastavku.
Dakle, općenita ideja koja stoji iza značajke 'Nasljeđivanje' jest da možemo stvoriti nove klase nasljeđivanjem iz već postojećih klasa. Nasljeđujući od već postojećih klasa, koristimo svojstva i ponašanje tih klasa. Osim toga, možemo dodati više svojstava i / ili ponašanja u našu novu klasu.
Značajka nasljeđivanja prikazuje ' roditelj-dijete ”Veza ili odnos u Javi. Klasa iz koje se nasljeđuje nova klasa naziva se „ Razred roditelja 'Dok se nova klasa naziva' Dječji razred '.
Nasljeđivanje se uglavnom koristi:
- Za nadjačavanje metode tako da možemo postići vrijeme polimorfizma .
- Do ponovno upotrijebite kod . Nasljeđivanjem iz već postojećih klasa osiguravamo ponovna upotrebljivost koda.
Uobičajena terminologija koja se koristi u nasljeđivanju
- Mogućnost ponovne upotrebe: Mehanizam kojim nove klase ponovno koriste polja ili svojstva i metode postojeće klase.
- Klasa: Klasa je zbirka objekata koji imaju zajednička svojstva. Klasa se može gledati kao predložak ili plavi ispis za objekte.
- Podrazred / Podređeni razred: Klasa koja nasljeđuje drugu klasu je podklasa ili podređena klasa ili izvedena klasa.
- Super klasa / razred roditelja: Klasa koju nasljeđuje druga klasa radi stjecanja svojstava i metoda naziva se roditeljska klasa ili superklasa ili osnovna klasa.
Sljedeća hijerarhija nasljeđivanja primjer je koji prikazuje superrazred i podrazred.
Imamo klasu Employee s poljima OrganisationName i EmployeeId. Može sadržavati i druga polja poput imena zaposlenika, odjela i ostalih podataka o zaposleniku.
Zatim izvodimo još jedan razred pod nazivom 'SoftwareDeveloper' s plaćom i pogodnostima na terenu. Klasa ClassDeveloper klasa nasljeđuje od klase Employee, a time i stječe svojstva klase Employee.
Kao što je prikazano na gornjem dijagramu, ovdje je klasa Employee klasa Super ili Base, a SoftwareDeveloper podklasa ili izvedena klasa.
‘Extends’ Riječ u Javi
U Javi se za nasljeđivanje klase koristi ključna riječ ‘extends’.
Općenita sintaksa nasljeđivanja Java dana je u nastavku:
class SubClass extends SuperClass { //subclass methods and fields }
Kao što je gore prikazano, ključna riječ ‘extends’ pojavljuje se iza naziva klase u sintaksi deklaracije klase.
Ključna riječ ‘extends’ znači da stvaramo novu klasu ‘SubClass’ koja će naslijediti svojstva i ponašanje od ‘SuperClass’. Drugim riječima, ključna riječ extends označava da gradimo novu klasu podrazreda na postojećoj funkcionalnosti SuperClass-a.
Nasljeđe provedeno s ključnom riječi 'extends' nasljeđivanje je klase. U sljedećem uputstvu razgovarat ćemo o drugoj ključnoj riječi 'implements' pomoću koje možemo naslijediti sučelja.
Primjer klase Employee-SoftwareDeveloper koji smo gore objasnili može se predstaviti kao:
class Employee{ String OrganizationName; int EmployeeId; } class SoftwareDeveloper extends Employee{ float Salary; float Perks; }
ODNOS IS-A I HAS-A
Razmotrite sljedeću strukturu klase:
class Mammal{ } class Cow extends Mammal{ }
Pa kako možemo protumačiti gornju strukturu? Kako se klasa Krava proširuje ili nasljeđuje sisavce, možemo reći „Krava JE Sisavac ”ili„ Krava JE VRSTA Sisavac'. Stoga, kad god izrazimo takve odnose, taj odnos je odnos „IS_A“.
U gornjoj strukturi koristili smo hijerarhiju nasljeđivanja kako bismo izrazili činjenicu da je jedna vrsta druge vrste. Dakle, u gornjoj strukturi koristili smo nasljedstvo da naznačimo odnos između Krave i Sisavaca.
Slično tome, možemo izraziti još neke odnose IS-A na sljedeći način:
Gore navedeni su neki od uobičajenih primjera odnosa koje možemo izraziti nasljeđivanjem u Javi.
Općenito, odnosi IS-A mogu se izraziti nasljeđivanjem.
Pogledajmo primjer u nastavku:
Na gornjem dijagramu vidimo da je prikazano da vozilo ima dva dijela, tj. Motor i kočnicu. Pa kako ovaj scenarij možemo pretočiti u riječi?
Možemo reći da „Vozilo sadrži motor i vozilo sadrži kočnica ”.
Dakle, ono što ovdje izražavamo nije odnos “IS-A” već odnos ograničenja u kojem određujemo jedan objekt kao dio drugog objekta.
što je računalni operativni sustav
U gornjem primjeru motor je a dio vozilo. To nije “ vrsta ”Vozilo. Ovo je ' IMA ”Ili odnos sadržaja ili sastava u Javi. Odnos Has-odnos u Javi izražava se uključivanjem objekta kao člana klase.
Dakle, ako slijedimo isti primjer vozila gore, možemo ga izraziti kao dolje:
class Engine{ } class Brake { } class Vehicle{ Engine e; Brake b; }
Dakle, Vozilo ima motor i kočnicu. Izražavanjem odnosa na gornji način, nismo zainteresirani za internu provedbu motora ili kočnice. Klasa vozila omogućit će da klase motora i kočnica znaju što je potrebno i te klase će to pružiti.
Poput odnosa IS-A, odnos HAS-A također je koristan u ponovnoj upotrebi koda.
U ovom ćemo tutorijalu detaljno razgovarati o nasljeđivanju (IS-A), a u sljedećem tutorijalu o ograničenju ili sastavu (HAS-A).
Primjer nasljeđivanja Java
Primijenimo jednostavan primjer u Javi za demonstraciju nasljeđivanja.
//example class demonstrating Inheritance in Java class BaseClass { public void display() { System.out.println('BaseClass::Display'); } } //create a new class from BaseClass class DerivedClass extends BaseClass { public void print() { System.out.println('DerivedClass::print'); } } class Main { public static void main(String[] args) { //create an object of DerivedClass DerivedClass d1 = new DerivedClass(); d1.display(); //call BaseClass method d1.print(); //call DerivedClass method } }
Izlaz:
Gornji program prikazuje jednostavan primjer nasljeđivanja. Deklarira se BaseClass s jednom metodom. Tada se deklarira još jedna klasa DerivedClass koja proširuje BaseClass. Ova klasa također ima jednu metodu.
U glavnoj metodi programa stvaramo objekt DerivedClass i pomoću ovog objekta nazivamo BaseClass kao i metodu DerivedClass.
Izlaz prikazuje poruke ispisane objema metodama. Kako se DerivedClass proširuje BaseClass, a metoda BaseClass je javna, vidljiva je DerivedClassu.
‘Super’ ključna riječ u Javi
U nasljeđivanju se bavimo superklasama ili roditeljskim tečajevima i dječjim časovima. Ako moramo intermedijarno pristupiti članovima superklase, uključujući varijable, metode ili konstruktore, tada moramo imati neki mehanizam. Ovaj mehanizam pristupa članovima osnovne klase osiguran je na Javi pomoću ključne riječi 'super'.
Dakle, u kojim scenarijima koristimo ključnu riječ 'super' u Javi?
U nastavku su navedeni scenariji u kojima ključna riječ 'super' može biti korisna.
- Kada super / osnovna klasa i pod / izvedena klasa imaju ista imena za članove, a mi želimo pristupiti članovima superklase, tada koristimo ključnu riječ super.
- Kada želimo pristupiti konstruktoru superklase iz podklase, tada koristimo ključnu riječ super za pozivanje ključne riječi superklase.
Na gornjoj slici prikazali smo strukturu nasljeđivanja. U osnovnoj kao i izvedenoj klasi imamo String varijablu myStr. U izvedenom razredu imamo funkciju printStr (). U ovoj smo metodi koristili ključnu riječ ‘super’ za pristup varijabli myStr iz osnovne klase.
Na slici smo prikazali strelice koje pokazuju na varijablu člana osnovne klase i izvedenu varijablu klase.
Pogledajmo sada programske primjere korištenja ključne riječi super za pristup raznim članovima superklase.
# 1) Pristup varijabli člana Superclass
Sljedeći Java program prikazuje upotrebu ključne riječi 'super' za pristup varijablama iz osnovne klase.
class Baseclass { String myStr; } class Subclass extends Baseclass { String myStr; public void printdetails() //Baseclass and Subclass have variables with same name { super.myStr = 'Super'; //refers to parent class member myStr = 'Sub'; System.out.println('Superclass myStr :' + super.myStr+' and Subclass myStr:'+myStr); } } class Main{ public static void main(String[] args) { Subclass cobj = new Subclass(); cobj. printdetails (); } }
Izlaz:
Gornji program pokazuje kako pristupiti varijablama člana osnovne klase iz izvedene klase kada su varijable člana deklarirane s istim imenom i u osnovnoj i u izvedenoj klasi.
Ovdje imamo varijablu myStr koja je deklarirana u bazi kao i izvedena klasa. U metodi printdetails upućujemo na varijablu myStr osnovne klase pomoću 'super.myStr', dok se izvedenoj varijabli klase myStr pristupa izravno bez ikakvog kvalifikatora.
# 2) Pristup Superclass Metodi
Dalje, vidjet ćemo kako pozvati metodu osnovne klase kada metoda u osnovnoj klasi i metoda u izvedenoj klasi imaju ista imena.
Sljedeći program to pokazuje.
class Parent { String myStr; public void print() //parent class method { myStr = 'Parent class myStr'; System.out.println(myStr); } } class Child extends Parent { String myStr; public void print() //child class method with same name as parent { super.print(); //call Parent class print() method myStr = 'Child class myStr'; System.out.println(myStr); } } class Main{ public static void main(String[] args) { Child c_obj = new Child(); c_obj.print (); } }
Izlaz:
# 3) Pristupite konstruktoru superklase
Kad nasljeđujemo jednu klasu od druge, imajte na umu da se konstruktori ne nasljeđuju.
Ako želimo izvršiti bilo koje upute iz konstruktora superklase prije izvođenja izvedenog konstruktora klase, tada također možemo pozvati konstruktor superklase pomoću ključne riječi ‘super’.
Za pozivanje konstruktora superklase koristimo poziv metode.
super (popis parametara ...)
Sljedeća metoda pokazuje pristup super konstruktorima u Javi.
class Parent { String myStr; public Parent(String name) //base class constructor { myStr = name; } } class Child extends Parent { String myStr; public Child(String name1, String name2) { super(name1); //call base class constructor and pass argument value this.myStr = name2; } public void printDetails() //print details of both constructors { System.out.println('From base class constructor: ' +super.myStr); System.out.println('From derived class constructor: ' + myStr); } } class Main{ public static void main(String[] args) { Child cobj = new Child('Super constructor string','Child constructor string'); cobj.printDetails(); } }
Izlaz:
Kao što vidimo iz gornjeg programa, konstruktor superklase pozvali smo iz izvedenog konstruktora klase. Imajte na umu da bi po dogovoru, kad god želimo pristupiti konstruktoru superklase, to trebao biti prvi izraz u konstruktoru izvedene klase.
Kako osnovna klasa ima parametrizirani konstruktor, također prosljeđujemo odgovarajući parametar super pozivu dok pozivamo konstruktor.
Ako nema eksplicitnog poziva na konstruktor super kao što je gore navedeno, tada prevodilac uvijek automatski dodaje implicitni poziv na super (). Ali imajte na umu da će ovo biti poziv zadanom konstruktoru superklase.
Često postavljana pitanja
P # 1) Što je nasljeđivanje u Javi?
Odgovor: Proces kojim jedna klasa stječe svojstva i ponašanje druge klase naziva se nasljeđivanje. U Javi jednu klasu nasljeđuje druga klasa pomoću ključne riječi ‘extends’.
Nasljeđivanje potiče ponovnu upotrebu koda, jer nasljeđivanjem možemo stjecati i koristiti već postojeća svojstva i ponašanje naslijeđene klase bez pisanja dupliciranog koda.
P # 2) Zašto se nasljeđivanje koristi u Javi?
dobar besplatni vatrozid za Windows 10
Odgovor: Nasljeđivanje se uglavnom koristi za poboljšanje ponovne upotrebe aplikacije. Koristeći nasljeđivanje možemo koristiti gotove klase u našoj aplikaciji. Ne moramo pisati svoj kod ako imamo spremnu funkcionalnost.
Druga upotreba nasljedstva je u nadjačavanju metode. Da bismo primijenili runtime polimorfizam koristimo se nasljeđivanjem.
P # 3) Koje su prednosti nasljeđivanja?
Odgovor: Ponovna upotrebljivost ključna je prednost nasljedstva. Dijeljenje koda nasljeđivanjem također rezultira boljom čitljivošću i boljom organizacijom koda.
Polimorfizam vremena izvođenja također možemo postići nadjačavanjem metode pomoću nasljeđivanja.
P # 4) Koje su značajke nasljeđivanja?
Odgovor: Svaka karakteristika ili značajka stečena od starije generacije vrši se nasljeđivanjem. Na primjer, osobina svjetlosnog oka koja se javlja u mnogim obiteljima primjer je nasljeđivanja.
S programskog gledišta, nasljeđivanje pruža značajku ponovne upotrebljivosti i nadjačavanja metode.
P # 5) Je li super () potreban?
Odgovor: Ne. Jer ako ne zovemo super (), prevodilac to implicitno čini umjesto nas. Ali tada je implicitni poziv super () zadani konstruktor osnovne klase. Dakle, ako nam treba parametarski konstruktor iz osnovne klase, tada bismo ga trebali eksplicitno nazvati.
Zaključak
U ovom uputstvu predstavili smo koncept nasljeđivanja u Javi. Nasljeđivanje je postupak stjecanja svojstava i ponašanja jedne klase u drugoj klasi. Ovdje smo razgovarali o osnovnoj definiciji i terminologiji koju koristimo u nasljeđivanju.
Također smo razgovarali o odnosima Is-A i Has-A u Javi. Nasljeđivanje se koristi za provedbu odnosa Is-A.
Zatim smo razgovarali o ključnim riječima 'extends' i 'super' u Javi koje se koriste u vezi s nasljeđivanjem. Extends se koristi za provedbu nasljeđivanja. Ključna riječ super koristi se za pozivanje na konstruktor osnovne metode, metodu ili varijablu iz izvedene klase.
=> Ovdje pogledajte Savršeni vodič za Java obuku.
Preporučena literatura
- Vodič za razred Java Scannera s primjerima
- Što je Java Vector | Vodič za Java Vector Class s primjerima
- Java Enum: Vodič za nabrajanje Java s primjerima
- Duljina Java niza () Metoda s primjerima
- Vodič za Java Float s primjerima programiranja
- Nasljeđivanje u C ++
- Vrste nasljeđivanja u C ++
- Python OOPs koncepti (klase Python, objekti i nasljeđivanje)