logo

Dedovanje v Javi

  1. Dedovanje
  2. Vrste dedovanja
  3. Zakaj večkratno dedovanje ni mogoče v Javi v primeru razreda?

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

Izrazi, uporabljeni v dedovanju

    Razred:Razred je skupina predmetov, ki imajo skupne lastnosti. Je predloga ali načrt, iz katerega so ustvarjeni predmeti.Podrazred/podrejeni razred:Podrazred je razred, ki podeduje drugi razred. Imenuje se tudi izpeljani razred, razširjeni razred ali podrejeni razred.Super razred/starševski razred:Nadrazred je razred, od katerega podrazred podeduje lastnosti. Imenuje se tudi osnovni razred ali nadrejeni razred.Ponovna uporabnost:Kot že ime pove, je ponovna uporabnost mehanizem, ki vam olajša ponovno uporabo polj in metod obstoječega razreda, ko ustvarite nov razred. Uporabite lahko ista polja in metode, ki so že definirane v prejšnjem razredu.

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

Dedovanje v Javi

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.

Vrste dedovanja v Javi

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:

Večkratno dedovanje v Javi

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