logo

Vrste dedovanja v Javi

Dedovanje je najmočnejša lastnost objektno orientiranega programiranja. Omogoča nam podedovanje lastnosti enega razreda v drug razred. V tem razdelku bomo razpravljali vrste dedovanja v Javi poglobljeno s primeri iz resničnega življenja. Izdelali bomo tudi programe Java za implementacijo koncepta različnih tipov dedovanja.

Dedovanje

Dedovanje je mehanizem za pogon novega razreda iz obstoječega razreda. Obstoječi (stari) razred je znan kot osnovni razred oz super razred oz razred staršev . Novi razred je znan kot a izpeljani razred oz podrazred oz otroški razred . Omogoča nam uporabo lastnosti in obnašanja enega razreda (nadrejenega) v drugem razredu (otroka).

Razred, katerega lastnosti so podedovane, je znan kot razred staršev in razred, ki podeduje lastnosti nadrejenega razreda, je znan kot otroški razred . Tako vzpostavi razmerje med roditeljskim in podrejenim razredom, ki je znano kot starš-otrok oz Je odnos.

Recimo, da sta imenovana dva razreda Oče in Otrok in želimo podedovati lastnosti razreda Oče v razredu Otrok. To lahko dosežemo z uporabo se razteza ključna beseda.

 //inherits the properties of the Father class class Child extends Father { //functionality } 

Vrste dedovanja v Javi

Kdaj naj uporabimo dedovanje?

Dedovanje zagotavlja ponovno uporabnost kode, zlasti kadar obstaja velik obseg kode za ponovno uporabo. Prav tako vzpostavlja razmerje med različnimi razredi, ki je znano kot a Je odnos. Lahko ga tudi uporabimo, če želimo doseči preglasitev metode .

Točke, ki si jih je treba zapomniti

  • Konstruktorja v Javi ni mogoče podedovati.
  • Zasebni člani v Javi niso podedovani.
  • Ciklično dedovanje v Javi ni dovoljeno.
  • Dodelitev nadrejenega sklica podrejenim objektom.
  • Konstruktorji se izvajajo zaradi funkcije super(), ki je prisotna v konstruktorju.

Vrste dedovanja

Java podpira naslednje štiri vrste dedovanja:

  • Enotno dedovanje
  • Večnivojsko dedovanje
  • Hierarhično dedovanje
  • Hibridno dedovanje
Vrste dedovanja v Javi

Opomba: Večkratno dedovanje ni podprto v Javi.

Razpravljajmo o vsakem z ustreznim primerom.

c++ set

Enotno dedovanje

Pri enojnem dedovanju je podrazred izpeljan samo iz enega nadrazreda. Podeduje lastnosti in obnašanje enostarševskega razreda. Včasih je znan tudi kot preprosto dedovanje .

Vrste dedovanja v Javi

Na zgornji sliki je Employee nadrejeni razred, Executive pa podrejeni razred. Razred Executive podeduje vse lastnosti razreda Employee.

Implementirajmo mehanizem enotnega dedovanja v programu Java.

slika kot ozadje v css

Executive.java

 class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } } 

Izhod:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Večnivojsko dedovanje

notri večnivojsko dedovanje , je razred izpeljan iz razreda, ki je prav tako izpeljan iz drugega razreda, se imenuje večnivojsko dedovanje. Preprosto povedano, lahko rečemo, da se razred, ki ima več kot en nadrejeni razred, imenuje večnivojsko dedovanje. Upoštevajte, da morajo biti razredi na različnih ravneh. Zato obstaja en sam osnovni razred in en sam izpeljan razred, vendar več vmesnih osnovnih razredov.

Vrste dedovanja v Javi

Na zgornji sliki razred Marks podeduje člane ali metode razreda Students. Razred Sports podeduje člane razreda Marks. Zato je razred Študent nadrejeni razredu Marks in razred Marks je nadrejeni razredu Šport. Zato razred Sports implicitno podeduje lastnosti študenta skupaj z razredom Marks.

Implementirajmo mehanizem večnivojskega dedovanja v programu Java.

potovanje ampak

MultilevelInheritanceExample.java

 //super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } } 

Izhod:

 registration number= 0987 marks= 78.0 score= 68.7 

Hierarhično dedovanje

Če je več razredov izpeljanih iz enega osnovnega razreda, se ta pokliče hierarhično dedovanje .

Vrste dedovanja v Javi

Na zgornji sliki razredi Science, Commerce in Arts podedujejo en nadrejeni razred z imenom Student.

Implementirajmo mehanizem hierarhičnega dedovanja v programu Java.

HierarchicalInheritanceExample.java

 //parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } } 

Izhod:

 The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked. 

Hibridno dedovanje

Hibridna sredstva so sestavljena iz več kot enega. Hibridno dedovanje je kombinacija dveh ali več vrst dedovanja.

python nova vrstica
Vrste dedovanja v Javi

Na zgornji sliki je dedek super razred. Razred Oče podeduje lastnosti razreda GrandFather. Ker oče in dedek predstavljata eno dedovanje. Poleg tega razred očeta podedujeta razred sin in hči. Tako Oče postane starševski razred za Sina in Hčer. Ti razredi predstavljajo hierarhično dedovanje. Skupaj označuje hibridno dedovanje.

Implementirajmo mehanizem hibridnega dedovanja v program Java.

Hči.java

 //parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } } 

Izhod:

 I am daughter. 

Večkratno dedovanje (ni podprto)

Java ne podpira večkratnega dedovanja zaradi dvoumnosti. Na primer, razmislite o naslednjem programu Java.

Demo.java

 class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } } 

Zgornja koda povzroči napako, ker se prevajalnik ne more odločiti, katero metodo message() naj prikliče. Zaradi tega razloga Java ne podpira večkratnega dedovanja na ravni razreda, vendar ga je mogoče doseči z vmesnik .