Dedovanje v Javi je mehanizem, v katerem en objekt pridobi vse lastnosti in obnašanja nadrejenega objekta. Je pomemben del OOPs (Objektno usmerjen programski sistem).
Ideja za dedovanjem v Javi je, da lahko ustvarite novo razredi ki so zgrajeni na podlagi obstoječih razredov. Ko podedujete iz obstoječega razreda, lahko znova uporabite metode in polja nadrejenega razreda. Poleg tega lahko dodate nove metode in polja tudi v svoj trenutni razred.
Dedovanje predstavlja Razmerje JE-A ki je znan tudi kot a starš-otrok odnos.
Zakaj uporabljati dedovanje v Javi
- Za Preglasitev metode (torej izvajalni polimorfizem mogoče doseči).
- Za možnost ponovne uporabe kode.
Izrazi, uporabljeni v dedovanju
Sintaksa dedovanja Jave
class Subclass-name extends Superclass-name { //methods and fields }
The razširi ključno besedo označuje, da ustvarjate nov razred, ki izhaja iz obstoječega razreda. Pomen 'razširja' je povečati funkcionalnost.
execlp
V terminologiji Jave se razred, ki je podedovan, imenuje nadrejeni ali nadrazred, novi razred pa otrok ali podrazred.
Primer dedovanja Jave
Kot je prikazano na zgornji sliki, je programer podrazred, zaposleni pa nadrazred. Razmerje med razredoma je Programer JE Zaposleni . To pomeni, da je programer vrsta zaposlenega.
q1 q2 q3 q4
class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } }Preizkusite zdaj
Programmer salary is:40000.0 Bonus of programmer is:10000
V zgornjem primeru lahko objekt Programer dostopa do polja lastnega razreda in razreda Employee, tj. možnosti ponovne uporabe kode.
Vrste dedovanja v Javi
Na podlagi razreda lahko v Javi obstajajo tri vrste dedovanja: enojno, večnivojsko in hierarhično.
V programiranju java je večkratno in hibridno dedovanje podprto samo prek vmesnika. Kasneje bomo spoznali vmesnike.
Opomba: Večkratno dedovanje ni podprto v Javi prek razreda.
Ko en razred podeduje več razredov, je to znano kot večkratno dedovanje. Na primer:
Primer enojnega dedovanja
Ko razred podeduje drug razred, je znan kot a eno dedovanje . V spodnjem primeru razred Dog podeduje razred Animal, tako da obstaja eno samo dedovanje.
Datoteka: TestInheritance.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }}
Izhod:
barking... eating...
Primer večnivojskega dedovanja
Ko obstaja veriga dedovanja, je znana kot večnivojsko dedovanje . Kot lahko vidite v spodnjem primeru, razred BabyDog podeduje razred Dog, ki spet podeduje razred Animal, tako da obstaja večnivojsko dedovanje.
velikost besedila lateks
Datoteka: TestInheritance2.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }}
Izhod:
weeping... barking... eating...
Primer hierarhičnega dedovanja
Ko dva ali več razredov podeduje en razred, je to znano kot hierarhično dedovanje . V spodnjem primeru razreda Dog and Cat podedujeta razred Animal, zato obstaja hierarhično dedovanje.
Datoteka: TestInheritance3.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }}
Izhod:
meowing... eating...
V) Zakaj večkratno dedovanje ni podprto v Javi?
Zaradi zmanjšanja zapletenosti in poenostavitve jezika večkratno dedovanje ni podprto v Javi.
kaj so selektorji v css
Razmislite o scenariju, kjer so A, B in C trije razredi. Razred C podeduje razreda A in B. Če imata razreda A in B isto metodo in jo pokličete iz predmeta podrejenega razreda, bo priklic metode razreda A ali B dvoumen.
Ker so napake med prevajanjem boljše od napak med izvajanjem, Java upodobi napako med prevajanjem, če podedujete 2 razreda. Ne glede na to, ali uporabljate isto metodo ali drugačno, bo prišlo do napake pri prevajanju.
class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } }Preizkusite zdaj
Compile Time Error