logo

Typy dědičnosti v Javě

Dědictví je nejvýkonnější funkcí objektově orientovaného programování. Umožňuje nám dědit vlastnosti jedné třídy do jiné třídy. V této části budeme diskutovat typy dědičnosti v Javě do hloubky s příklady ze života. Také vytvoříme programy Java pro implementaci konceptu různých typů dědičnosti.

Dědictví

Dědictví je mechanismus řízení nové třídy z existující třídy. Stávající (stará) třída je známá jako základní třída nebo super třída nebo rodičovská třída . Nová třída je známá jako a odvozená třída nebo podtřída nebo dětská třída . Umožňuje nám využít vlastnosti a chování jedné třídy (rodiče) v jiné třídě (dítě).

Třída, jejíž vlastnosti se dědí, se nazývá rodičovská třída a třída, která dědí vlastnosti nadřazené třídy, je známá jako dětská třída . Zakládá tedy vztah mezi třídou rodiče a dítěte, který je známý jako rodič-dítě nebo Je vztah.

Předpokládejme, že existují dvě pojmenované třídy Otec a Dítě a chceme zdědit vlastnosti třídy Father ve třídě Child. Toho můžeme dosáhnout pomocí rozšiřuje klíčové slovo.

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

Typy dědičnosti v Javě

Kdy bychom měli použít dědictví?

Dědičnost poskytuje znovupoužitelnost kódu, zejména pokud existuje velký rozsah kódu k opětovnému použití. Stanovuje také vztah mezi různými třídami, který je známý jako a Je vztah. Můžeme to také použít, pokud chceme dosáhnout přeřazení metody .

Body k zapamatování

  • Konstruktor nelze v Javě zdědit.
  • Soukromí členové se v Javě nedědí.
  • Cyklické dědění není v Javě povoleno.
  • Přiřaďte rodičovský odkaz podřízeným objektům.
  • Konstruktory se spouštějí kvůli super() přítomnému v konstruktoru.

Typy dědičnosti

Java podporuje následující čtyři typy dědičnosti:

  • Jediné dědictví
  • Víceúrovňová dědičnost
  • Hierarchická dědičnost
  • Hybridní dědičnost
Typy dědičnosti v Javě

Poznámka: Vícenásobná dědičnost není v Javě podporována.

Pojďme diskutovat o každém na správném příkladu.

Jediné dědictví

Při jednoduché dědičnosti je podtřída odvozena pouze od jedné nadtřídy. Dědí vlastnosti a chování třídy s jedním rodičem. Někdy je také známý jako jednoduché dědictví .

číst excel soubor v Javě
Typy dědičnosti v Javě

Na výše uvedeném obrázku je zaměstnanec nadřazenou třídou a Executive je podřízenou třídou. Třída Executive zdědí všechny vlastnosti třídy Zaměstnanec.

Pojďme implementovat mechanismus jediné dědičnosti v programu 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ýstup:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Víceúrovňová dědičnost

v víceúrovňová dědičnost , třída je odvozena od třídy, která je také odvozena od jiné třídy, se nazývá víceúrovňová dědičnost. Jednoduše řečeno, můžeme říci, že třída, která má více než jednu nadřazenou třídu, se nazývá víceúrovňová dědičnost. Upozorňujeme, že třídy musí být na různých úrovních. Existuje tedy jedna základní třída a jedna odvozená třída, ale více středních základních tříd.

Typy dědičnosti v Javě

Na výše uvedeném obrázku třída Marks zdědí členy nebo metody třídy Studenti. Třída Sport zdědí členy třídy Známky. Třída Student je tedy rodičovskou třídou třídy Známky a třída Známky je rodičem třídy Sport. Třída Sport tedy implicitně dědí vlastnosti studenta spolu se známkami třídy.

Pojďme implementovat víceúrovňový mechanismus dědičnosti v programu 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ýstup:

 registration number= 0987 marks= 78.0 score= 68.7 

Hierarchická dědičnost

Pokud je z jedné základní třídy odvozeno několik tříd, je volána hierarchická dědičnost .

řetězec na celé číslo java
Typy dědičnosti v Javě

Na výše uvedeném obrázku třídy Science, Commerce a Arts zdědí jednu nadřazenou třídu s názvem Student.

Implementujme hierarchický mechanismus dědičnosti 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(); } } 

Výstup:

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

Hybridní dědičnost

Hybridní prostředky se skládají z více než jednoho. Hybridní dědičnost je kombinace dvou nebo více typů dědičnosti.

Typy dědičnosti v Javě

Na obrázku výše je dědeček super třída. Třída Otec dědí vlastnosti třídy GrandFather. Protože otec a děd představuje jediné dědictví. Třídu Otec dále dědí třída Syn a dcera. Otec se tak stává rodičovskou třídou pro Syna a Dceru. Tyto třídy představují hierarchickou dědičnost. Společně to označuje hybridní dědičnost.

Implementujme mechanismus hybridní dědičnosti v programu Java.

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

Výstup:

 I am daughter. 

Vícenásobná dědičnost (nepodporováno)

Java nepodporuje vícenásobnou dědičnost kvůli nejednoznačnosti. Zvažte například následující 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(); } } 

Výše uvedený kód dává chybu, protože kompilátor nemůže rozhodnout, která metoda message() má být vyvolána. Z tohoto důvodu Java nepodporuje vícenásobné dědění na úrovni třídy, ale lze jej dosáhnout prostřednictvím an rozhraní .

řazení seznamu polí