logo

Typy dedičnosti v Jave

Dedičnosť je najmocnejšou vlastnosťou objektovo orientovaného programovania. Umožňuje nám dediť vlastnosti jednej triedy do inej triedy. V tejto časti budeme diskutovať typy dedičnosti v Jave do hĺbky s príkladmi zo života. Taktiež vytvoríme programy Java na implementáciu konceptu rôznych typov dedičnosti.

Dedičnosť

Dedičnosť je mechanizmus riadenia novej triedy z existujúcej triedy. Existujúca (stará) trieda je známa ako základná trieda alebo super trieda alebo rodičovská trieda . Nová trieda je známa ako a odvodená trieda alebo podtrieda alebo detská trieda . Umožňuje nám využiť vlastnosti a správanie jednej triedy (rodiča) v inej triede (dieťaťa).

Trieda, ktorej vlastnosti sú zdedené, je známa ako rodičovská trieda a trieda, ktorá zdedí vlastnosti rodičovskej triedy, je známa ako detská trieda . Zakladá teda vzťah medzi triedou rodiča a dieťaťa, ktorý je známy ako rodič-dieťa resp Je-a vzťah.

árijský chán

Predpokladajme, že sú pomenované dve triedy otec a Dieťa a chceme zdediť vlastnosti triedy Otec v triede Dieťa. Môžeme to dosiahnuť pomocou predlžuje kľúčové slovo.

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

Typy dedičnosti v Jave

Kedy by sme mali použiť dedičstvo?

Dedičstvo poskytuje znovupoužiteľnosť kódu, najmä ak existuje veľký rozsah kódu na opätovné použitie. Stanovuje tiež vzťah medzi rôznymi triedami, ktorý je známy ako a Je-a vzťah. Môžeme ho aj použiť, ak chceme dosiahnuť prepísanie metódy .

Body na zapamätanie

  • Konštruktor nie je možné zdediť v jazyku Java.
  • Súkromní členovia sa v Jave nededia.
  • Cyklické dedenie nie je v jazyku Java povolené.
  • Priraďte rodičovský odkaz podriadeným objektom.
  • Konštruktory sa spúšťajú vďaka super() prítomnému v konštruktore.

Typy dedičstva

Java podporuje nasledujúce štyri typy dedenia:

  • Jediné dedičstvo
  • Viacúrovňová dedičnosť
  • Hierarchické dedičstvo
  • Hybridné dedičstvo
Typy dedičnosti v Jave

Poznámka: Viacnásobné dedičstvo nie je v jazyku Java podporované.

Poďme diskutovať o každom na správnom príklade.

Jediné dedičstvo

Pri jednoduchej dedičnosti je podtrieda odvodená iba od jednej nadtriedy. Dedí vlastnosti a správanie jednorodičovskej triedy. Niekedy je známy aj ako jednoduché dedičstvo .

Typy dedičnosti v Jave

Na obrázku vyššie je zamestnanec rodičovskou triedou a vedúci je podradená trieda. Trieda Executive dedí všetky vlastnosti triedy Zamestnanec.

Greatandhra

Implementujme mechanizmus jedinej dedičnosti v programe Java.

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); } } 

Výkon:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Viacúrovňová dedičnosť

In viacúrovňové dedičstvo , trieda je odvodená od triedy, ktorá je tiež odvodená od inej triedy, sa nazýva viacúrovňová dedičnosť. Jednoducho povedané, môžeme povedať, že trieda, ktorá má viac ako jednu rodičovskú triedu, sa nazýva viacúrovňová dedičnosť. Upozorňujeme, že triedy musia byť na rôznych úrovniach. Existuje teda jedna základná trieda a jedna odvodená trieda, ale viacero stredných základných tried.

Fibonacciho séria v Jave
Typy dedičnosti v Jave

Na obrázku vyššie trieda Známky zdedí členov alebo metódy triedy Študenti. Trieda Šport zdedí členov triedy Marks. Preto je trieda Študent rodičovskou triedou triedy Známky a trieda Známky je rodičom triedy Šport. Preto trieda Šport implicitne zdedí vlastnosti študenta spolu s triednymi známkami.

Implementujme viacúrovňový mechanizmus dedičnosti v programe Java.

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(); } } 

Výkon:

 registration number= 0987 marks= 78.0 score= 68.7 

Hierarchické dedičstvo

Ak je z jednej základnej triedy odvodených niekoľko tried, volá sa hierarchické dedičstvo .

Typy dedičnosti v Jave

Na obrázku vyššie triedy veda, obchod a umenie zdedia jednu nadradenú triedu s názvom Študent.

Implementujme mechanizmus hierarchickej dedičnosti v programe 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(); } } 

Výkon:

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

Hybridné dedičstvo

Hybridné prostriedky pozostávajú z viac ako jedného. Hybridná dedičnosť je kombináciou dvoch alebo viacerých typov dedičnosti.

Typy dedičnosti v Jave

Na obrázku vyššie je starý otec super trieda. Trieda Otec zdedí vlastnosti triedy GrandFather. Keďže otec a starý otec predstavujú jediné dedičstvo. Okrem toho triedu Otec zdedí trieda Syn a Dcéra. Otec sa tak stáva rodičovskou triedou pre Syna a Dcéru. Tieto triedy predstavujú hierarchické dedičstvo. Spoločne to označuje hybridné dedičstvo.

1 milión v číslach

Implementujme mechanizmus hybridnej dedičnosti v programe Java.

Dcéra.java

číslovaná abeceda
 //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(); } } 

Výkon:

 I am daughter. 

Viacnásobné dedičstvo (nepodporované)

Java nepodporuje viacnásobné dedičstvo kvôli nejednoznačnosti. Zvážte napríklad nasledujúci program 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(); } } 

Vyššie uvedený kód poskytuje chybu, pretože kompilátor sa nemôže rozhodnúť, ktorá metóda message() sa má vyvolať. Z tohto dôvodu Java nepodporuje viacnásobné dedičstvo na úrovni triedy, ale dá sa dosiahnuť prostredníctvom an rozhranie .