what is inheritance java tutorial with examples
Ta vadnica razlaga koncept dedovanja v Javi, povezane izraze, kot so ključne besede 'extends' in 'super', podrazred, superrazred, razmerja Is-A, HAS-A itd.:
Po spoznavanju treh stebrov OOP, in sicer abstrakcije, enkapsulacije in polimorfizma v Javi, pridemo do zadnjega stebra OOP, to je dedovanja.
Od te vadnice bomo o nasledstvu v Javi razpravljali v naslednjih nekaj vajah.
=> Preberite serijo Easy Java Training Series.
Kaj se boste naučili:
Dedovanje v Javi
Dedovanje v Javi lahko definiramo kot tehniko ali postopek, pri katerem en predmet razreda pridobi vedenje in lastnosti drugega predmeta. To se naredi z dedovanjem razreda ali vzpostavitvijo odnosa med dvema razredoma.
Na primer, žaba je dvoživka. Tako kot druge živali iz razreda dvoživk ima tudi Žaba številne značilnosti, ki so skupne drugim živalim. Torej je tu dvoživka vrsta in njeni člani so živali, kot so žabe.
Če moramo predstaviti dvoživke in njihove člane v programski predstavitvi z uporabo OOP, bomo razvili razred »dvoživke«, ki vsebuje lastnosti ali vedenje, ki je skupno dvoživkam na splošno.
Tako nam ni treba podvajati skupnih lastnosti in vedenja vseh živali, ki jih opisujemo dvoživke. Neposredno bomo ustvarili razred za dvoživke in podedovali iz razreda dvoživk, kot je prikazano spodaj.
Splošna ideja funkcije »Dedovanje« je torej ta, da lahko ustvarimo nove razrede z dedovanjem iz že obstoječih razredov. Z dedovanjem iz že obstoječih razredov lahko uporabimo lastnosti in vedenje teh razredov. Poleg tega lahko v naš novi razred dodamo več lastnosti in / ali vedenja.
Funkcija dedovanja prikazuje ' starš-otrok ”Povezava ali odnos v Javi. Razred, iz katerega je podedovan novi razred, se imenuje » Razred staršev ', Medtem ko se novi razred imenuje' Otroški razred '.
Dedovanje se uporablja predvsem:
- Za preglasitev metode tako da lahko dosežemo polimorfizem med izvajanjem .
- Za znova uporabite kodo . Z dedovanjem iz že obstoječih razredov zagotovimo ponovna uporabnost kode.
Skupna terminologija, ki se uporablja pri dedovanju
- Ponovna uporabnost: Mehanizem, s katerim novi razredi ponovno uporabljajo polja ali lastnosti in metode obstoječega razreda.
- Razred: Razred je zbirka predmetov, ki imajo skupne lastnosti. Razred si lahko ogledate kot predlogo ali modro tiskanje predmetov.
- Podrazred / Otroški razred: Razred, ki podeduje drug razred, je podrazred ali podrejeni razred ali izpeljani razred.
- Super razred / razred staršev: Razred, ki ga podeduje drug razred za pridobivanje lastnosti in metod, se imenuje roditeljski razred ali superrazred ali osnovni razred.
Naslednja hierarhija dedovanja je primer, ki prikazuje nadrazred in podrazred.
Imamo razred Employee s polji OrganisationName in EmployeeId. Lahko ima tudi druga polja, kot so ime zaposlenega, oddelek in drugi podatki o zaposlenem.
Nato dobimo še en razred z imenom 'SoftwareDeveloper' s plačo in ugodnostmi na terenu. Razred SoftwareDeveloper podeduje od razreda Employee in s tem pridobi lastnosti razreda Employee.
Kot je prikazano na zgornjem diagramu, je tukaj razred Employee razred Super ali Base, program SoftwareDeveloper pa podrazred ali izpeljani razred.
‘Extends’ Ključna beseda v Javi
V Javi se za podedovanje razreda uporablja ključna beseda 'extends'.
Splošna sintaksa dedovanja Java je podana spodaj:
class SubClass extends SuperClass { //subclass methods and fields }
Kot je prikazano zgoraj, se ključna beseda 'extends' pojavi za imenom razreda v sintaksi deklaracije razreda.
Ključna beseda 'extends' sporoča, da ustvarjamo nov razred 'SubClass', ki bo lastnosti in vedenje podedoval od 'SuperClass'. Z drugimi besedami, ključna beseda extends pomeni, da na obstoječi funkcionalnosti SuperClass gradimo nov razred podrazreda.
Dedovanje, izvedeno s ključno besedo 'extends', je dedovanje razreda. V naslednji vadnici bomo razpravljali o drugi ključni besedi ‘implements’, s katero lahko podedujemo vmesnike.
Primer razreda Employee-SoftwareDeveloper, ki smo ga razložili zgoraj, lahko predstavimo kot:
class Employee{ String OrganizationName; int EmployeeId; } class SoftwareDeveloper extends Employee{ float Salary; float Perks; }
Razmerje IS-A IN HAS-A
Upoštevajte naslednjo strukturo razredov:
class Mammal{ } class Cow extends Mammal{ }
Torej, kako si lahko razlagamo zgornjo strukturo? Ko se razred Krava razširi ali podeduje sesalce, lahko rečemo »Krava JE Sesalci «ali» Krava JE nekako Sesalci «. Kadarkoli izražamo takšna razmerja, je to posebno razmerje razmerje “IS_A”.
V zgornji strukturi smo s hierarhijo dedovanja izrazili dejstvo, da je ena vrsta druge vrste. Torej smo v zgornji strukturi z dedovanjem označili razmerje med kravo in sesalci.
Podobno lahko izrazimo še nekaj odnosov IS-A na naslednji način:
Zgoraj je nekaj pogostih primerov odnosov, ki jih lahko izrazimo z dedovanjem v Javi.
Na splošno lahko razmerja IS-A izrazimo z dedovanjem.
Zdaj pa si oglejmo spodnji primer:
V zgornjem diagramu vidimo, da ima vozilo dva dela, to je motor in zavoro. Torej, kako lahko ta scenarij izrazimo z besedami?
Lahko rečemo, da „Vozilo vsebuje motor in vozilo vsebuje zavora «.
Torej tukaj izražamo ne razmerje 'IS-A', temveč razmerje zadrževanja, pri katerem en predmet določimo kot del drugega predmeta.
neto vprašanja in odgovori za sveže
V zgornjem primeru je motor a del vozilu. To ni ' recimo ”Vozilo. To je ' IMA 'Ali razmerje zadrževanja ali sestave v Javi. Razmerje Has-a v Javi se izrazi z vključitvijo predmeta kot člana razreda.
Če torej sledimo istemu primeru zgoraj, ga lahko izrazimo kot spodaj:
class Engine{ } class Brake { } class Vehicle{ Engine e; Brake b; }
Vozilo ima torej motor in zavoro. Z izražanjem odnosa na zgornji način nas notranja izvedba motorja ali zavore ne zanima. Razred vozil bo razrede motorjev in zavor vedel, kaj je potrebno, in ti razredi bodo to zagotovili.
Tako kot razmerje IS-A je tudi razmerje HAS-A koristno pri ponovni uporabi kode.
V tej vadnici bomo podrobno razpravljali o dedovanju (IS-A), v naslednji vadnici pa o zadrževanju ali sestavi (HAS-A).
Primer dedovanja Java
Uvedimo preprost primer v Javi za prikaz dedovanja.
//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 } }
Izhod:
Zgornji program prikazuje preprost primer dedovanja. Deklariran je BaseClass z eno metodo. Nato se razglasi še en razred DerivedClass, ki razširja BaseClass. Ta razred ima tudi eno metodo.
V glavni metodi programa ustvarimo objekt DerivedClass in s tem objektom imenujemo BaseClass in metodo DerivedClass.
Na izhodu so prikazana sporočila, natisnjena z obema metodama. Ker DerivedClass razširja BaseClass in je metoda BaseClass javna, je vidna DerivedClass.
'Super' ključna beseda v Javi
Pri dedovanju imamo opravka s superrazredi ali nadrejenimi razredi in otroškimi razredi. Če moramo vmesno dostopati do članov superklase, vključno s spremenljivkami, metodami ali konstruktorji, potem moramo imeti nekaj mehanizma. Ta mehanizem dostopa do članov osnovnega razreda je na voljo v Javi z uporabo ključne besede 'super'.
Torej, v katerih scenarijih uporabljamo ključno besedo 'super' v Javi?
Spodaj so navedeni primeri, v katerih je lahko koristna ključna beseda 'super'.
- Ko imata razred super / osnovni in pod / izpeljani razred enaka imena za člane in želimo dostopati do članov superklase, uporabimo ključno besedo super.
- Ko želimo iz podrazreda dostopati do konstruktorja superklase, uporabimo ključno besedo super za priklic ključne besede superklase.
Na zgornji sliki smo prikazali strukturo dedovanja. V osnovnem in izpeljanem razredu imamo spremenljivko String myStr. V derivaClass imamo funkcijo printStr (). Pri tej metodi smo uporabili ključno besedo ‘super’ za dostop do spremenljivke myStr iz osnovnega razreda.
Na sliki smo prikazali puščici, ki kažeta na spremenljivko člana osnovnega razreda in izpeljano spremenljivko razreda.
Zdaj pa si oglejmo primere programiranja uporabe ključne besede super za dostop do različnih članov superklase.
# 1) Dostop do spremenljivke člana Superclass
Naslednji program Java prikazuje uporabo ključne besede „super“ za dostop do spremenljivk iz osnovnega razreda.
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 (); } }
Izhod:
Zgornji program prikazuje, kako dostopati do spremenljivk člana osnovnega razreda iz izpeljanega razreda, ko so spremenljivke članice z istim imenom deklarirane tako v osnovnem kot izpeljanem razredu.
Tu imamo spremenljivko myStr, ki je navedena v osnovnem in izpeljanem razredu. V metodi printdetails se sklicujemo na spremenljivko myStr osnovnega razreda z uporabo 'super.myStr', medtem ko do izpeljane spremenljivke razreda myStr dostopamo neposredno brez kakršnega koli kvalifikatorja.
# 2) Dostop do metode Superclass
Nato bomo videli, kako poklicati metodo osnovnega razreda, če imata metoda v osnovnem razredu in metoda v izpeljanem razredu enaka imena.
Naslednji program to dokazuje.
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 (); } }
Izhod:
# 3) Dostop do konstruktorja Superclass
Ko podedujemo en razred od drugega, upoštevajte, da konstruktorji niso podedovani.
orodje za popravilo programske opreme windows 10
Če želimo pred izvajanjem konstruktorja izpeljanega razreda izvršiti kakršna koli navodila iz konstruktorjev superklase, lahko s pomočjo ključne besede ‘super’ pokličemo tudi konstruktor superklase.
Za klic konstruktorja superklase uporabimo klic metode.
super (seznam parametrov…)
Naslednja metoda prikazuje dostop do super konstruktorjev v 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(); } }
Izhod:
Kot lahko vidimo iz zgornjega programa, smo konstruktor superklase poklicali iz konstruktorja izpeljanega razreda. Upoštevajte, da mora biti po dogovoru prvič v konstruktorju izpeljanega razreda, kadar želimo dostopati do konstruktorja superklase.
Ker ima osnovni razred parametriziran konstruktor, med klicanjem konstruktorja tudi posredujemo ustrezen parameter super klicu.
Če ni izrecno poklican konstruktor super kot zgoraj, potem prevajalnik vedno samodejno doda implicitni klic super (). Vendar upoštevajte, da bo to klic privzetemu konstruktorju superrazreda.
Pogosto zastavljena vprašanja
V # 1) Kaj je dedovanje v Javi?
Odgovor: Proces, s katerim en razred pridobi lastnosti in vedenje drugega razreda, se imenuje dedovanje. V Javi en razred podeduje drugi razred z uporabo ključne besede ‘extends’.
Dedovanje spodbuja ponovno uporabo kode, saj lahko z dedovanjem pridobimo in uporabimo že obstoječe lastnosti in vedenje podedovanega razreda, ne da bi morali pisati podvojene kode.
V # 2) Zakaj se dedovanje uporablja v Javi?
Odgovor: Dedovanje se v glavnem uporablja za izboljšanje ponovne uporabe aplikacije. Z uporabo dedovanja lahko v naši aplikaciji uporabimo pripravljene razrede. Če imamo pripravljeno funkcionalnost, nam ni treba pisati kode.
Druga uporaba dedovanja je v preglasitvi metode. Za izvajanje polimorfizma med izvajanjem uporabimo dedovanje.
V # 3) Kakšne so prednosti dedovanja?
Odgovor: Ponovna uporabnost je ključna prednost dedovanja. Skupna raba kode z dedovanjem povzroči tudi boljšo berljivost in boljšo organizacijo kode.
Polimorfizem med izvajanjem lahko dosežemo tudi s preglasitvijo metode z uporabo dedovanja.
V # 4) Katere so značilnosti dedovanja?
Odgovor: Katera koli značilnost ali lastnost, pridobljena od starejše generacije, se opravi z dedovanjem. Na primer, lastnost svetlobnega očesa, ki se pojavlja v mnogih družinah, je primer dedovanja.
S programskega vidika dedovanje zagotavlja funkcijo ponovne uporabnosti in preglasitve metode.
V # 5) Ali je super () nujen?
Odgovor: Ne. Ker če ne pokličemo super (), prevajalnik to naredi implicitno namesto nas. Potem pa je implicitni priklic super () privzeti konstruktor osnovnega razreda. Torej, če potrebujemo parametrizirani konstruktor iz osnovnega razreda, bi ga morali izrecno poklicati.
Zaključek
V tej vadnici smo predstavili koncept dedovanja v Javi. Dedovanje je postopek pridobivanja lastnosti in vedenja enega razreda v drugem razredu. Tu smo razpravljali o osnovni definiciji in terminologiji, ki jo uporabljamo pri dedovanju.
Razpravljali smo tudi o odnosih Is-A in Has-A v Javi. Dedovanje se uporablja za izvajanje razmerja Is-A.
Nato smo razpravljali o ključnih besedah 'extends' in 'super' v Javi, ki se uporabljajo v povezavi z dedovanjem. Extends se uporablja za izvajanje dedovanja. Ključna beseda super se uporablja za sklicevanje na konstruktor osnovnega razreda, metodo ali spremenljivko iz izvedenega razreda.
=> Tukaj si oglejte Perfect Java Training Guide.
Priporočeno branje
- Vadnica razreda Java Scanner Class z primeri
- Kaj je Java Vector | Vadnica Java Vector Class s primeri
- Java Enum: Vadnica za naštevanje Java s primeri
- Dolžina niza Java () Metoda s primeri
- Vadnica Java Float s primeri programiranja
- Dedovanje v jeziku C ++
- Vrste dedovanja v jeziku C ++
- Koncepti OOP-jev Python (razredi, predmeti in dedovanje Python)