logo

Az öröklődés típusai a Java nyelven

Öröklés az objektumorientált programozás legerősebb funkciója. Lehetővé teszi, hogy egy osztály tulajdonságait egy másik osztályba örököljük. Ebben a részben megvitatjuk öröklődés típusai Java nyelven valós példákkal mélyrehatóan. Ezenkívül Java programokat fogunk létrehozni a különböző típusú öröklődés koncepciójának megvalósítására.

Öröklés

Öröklés egy olyan mechanizmus, amely egy új osztályt vált ki egy meglévő osztályból. A meglévő (régi) osztály ún alaposztály vagy szuper osztály vagy szülői osztály . Az új osztály a származtatott osztály vagy alosztály vagy gyerek osztály . Lehetővé teszi számunkra, hogy egy osztály (szülő) tulajdonságait és viselkedését használjuk egy másik osztályban (gyermek).

Egy osztályt, amelynek tulajdonságai öröklődnek, ún szülői osztály a szülőosztály tulajdonságait öröklő osztályt pedig ún gyerek osztály . Így olyan kapcsolatot hoz létre a szülő és a gyermek osztály között, amelyet szülő-gyermek ill Egy kapcsolat.

Tegyük fel, hogy két osztály van megnevezve Apa és Gyermek és szeretnénk átörökíteni az Apa osztály tulajdonságait a Gyermek osztályban. Ezt úgy érhetjük el, hogy a kiterjed kulcsszó.

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

Az öröklődés típusai a Java nyelven

Mikor használjunk öröklést?

Az öröklés biztosítja a újrahasználhatóság kódot, különösen akkor, ha nagy mennyiségű kód van újrafelhasználva. Megállapítja a különböző osztályok közötti kapcsolatot is, amelyet a Egy kapcsolat. Használhatjuk is, ha el akarjuk érni módszer felülbírálása .

Emlékeztető pontok

  • A konstruktor nem örökölhető Java nyelven.
  • A magántagok nem öröklődnek a Java nyelven.
  • A ciklikus öröklődés nem engedélyezett a Java nyelven.
  • Szülőhivatkozás hozzárendelése gyermekobjektumokhoz.
  • A konstruktorok a konstruktorban jelenlévő super() miatt kerülnek végrehajtásra.

Az öröklődés típusai

A Java a következő négy öröklési típust támogatja:

  • Egyetlen öröklődés
  • Többszintű öröklődés
  • Hierarchikus öröklődés
  • Hibrid öröklődés
Az öröklődés típusai a Java nyelven

Megjegyzés: A Java nem támogatja a többszörös öröklődést.

Beszéljük meg mindegyiket megfelelő példával.

Egyetlen öröklődés

Egyetlen öröklődés esetén egy alosztály csak egy szuperosztályból származik. Egyszülős osztály tulajdonságait és viselkedését örökli. Néha úgy is ismert, mint egyszerű öröklődés .

Az öröklődés típusai a Java nyelven

A fenti ábrán az Employee egy szülő osztály, az Executive pedig egy gyermekosztály. Az Executive osztály örökli az Employee osztály összes tulajdonságát.

Valósítsuk meg az egyszeres öröklődési mechanizmust egy Java programban.

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

Kimenet:

a különbség a gigabájt és a megabájt között
 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Többszintű öröklődés

Ban ben többszintű öröklődés , egy osztály olyan osztályból származik, amely egy másik osztályból is származik, többszintű öröklődésnek nevezzük. Egyszerű szavakkal azt mondhatjuk, hogy egynél több szülőosztályú osztályt többszintű öröklődésnek nevezünk. Vegye figyelembe, hogy az osztályoknak különböző szinteken kell lenniük. Ezért létezik egyetlen alaposztály és egyetlen származtatott osztály, de több közbenső alaposztály is létezik.

Az öröklődés típusai a Java nyelven

A fenti ábrán a Marks osztály örökli a Diákok osztály tagjait vagy metódusait. A Sport osztály örökli a Marks osztály tagjait. Ezért a Diák osztály a Marks osztály szülőosztálya, a Marks osztály pedig a Sport osztály szülőosztálya. Ezért a Sport osztály implicit módon örökli a Diák tulajdonságait a Marks osztályokkal együtt.

Valósítsuk meg a többszintű öröklődési mechanizmust egy Java programban.

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

Kimenet:

 registration number= 0987 marks= 78.0 score= 68.7 

Hierarchikus öröklődés

Ha egyetlen alaposztályból több osztály származik, akkor azt hívják hierarchikus öröklődés .

Az öröklődés típusai a Java nyelven

A fenti ábrán a tudomány, a kereskedelem és a művészetek osztályok örökölnek egy tanuló nevű egyszülős osztályt.

Valósítsuk meg a hierarchikus öröklési mechanizmust egy Java programban.

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

Kimenet:

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

Hibrid öröklődés

A hibrid eszközök egynél többből állnak. A hibrid öröklődés két vagy több típusú öröklődés kombinációja.

Az öröklődés típusai a Java nyelven

A fenti ábrán a nagypapa szuper osztály. Az Apa osztály örökli a Nagyapa osztály tulajdonságait. Mivel az apa és a nagyapa egyetlen örökséget képvisel. Továbbá az Apa osztályt a Fiú és lánya osztály örökli. Így az Atya lesz a Fiú és Lány szülőosztálya. Ezek az osztályok a hierarchikus öröklődést képviselik. Összevonva a hibrid öröklődést jelöli.

Valósítsuk meg a hibrid öröklődési mechanizmust egy Java programban.

Lánya.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(); } } 

Kimenet:

10 ml-től unciáig
 I am daughter. 

Többszörös öröklés (nem támogatott)

A Java a többértelműség miatt nem támogatja a többszörös öröklődést. Vegyük például a következő Java programot.

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

A fenti kód hibát jelez, mert a fordító nem tudja eldönteni, hogy melyik message() metódust kell meghívni. Emiatt a Java nem támogatja a többszörös öröklődést osztályszinten, hanem egy felület .