logo

Mantojuma veidi Java valodā

Mantojums ir visspēcīgākā objektorientētās programmēšanas funkcija. Tas ļauj mums mantot vienas klases īpašības citā klasē. Šajā sadaļā mēs apspriedīsim mantojuma veidi Java valodā padziļināti ar piemēriem no dzīves. Tāpat veidosim Java programmas dažādu mantojuma veidu koncepcijas ieviešanai.

Mantojums

Mantojums ir mehānisms, kā vadīt jaunu klasi no esošās klases. Esošā (vecā) klase ir pazīstama kā bāzes klase vai super klase vai vecāku klase . Jaunā klase ir pazīstama kā a atvasināta klase vai apakšklase vai bērnu klase . Tas ļauj mums izmantot vienas klases (vecāku) īpašības un uzvedību citā klasē (bērnā).

Klase, kuras īpašības ir mantotas, ir pazīstama kā vecāku klase un klase, kas pārmanto vecākklases īpašības, ir pazīstama kā bērnu klase . Tādējādi tā izveido attiecības starp vecāku un bērnu klasi, kas ir pazīstama kā vecāks-bērns vai Ir attiecības.

Pieņemsim, ka ir divas nosauktas klases Tēvs un Bērns un mēs vēlamies mantot Tēva klases īpašības Bērnu klasē. Mēs to varam panākt, izmantojot pagarina atslēgvārds.

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

Mantojuma veidi Java valodā

Kad mums vajadzētu izmantot mantojumu?

Mantojums nodrošina atkārtota izmantošana koda, it īpaši, ja atkārtoti jāizmanto liels koda apjoms. Tas arī nosaka attiecības starp dažādām klasēm, kas pazīstamas kā a Ir attiecības. Mēs to varam arī izmantot, ja vēlamies sasniegt metodes ignorēšana .

javafx

Punkti, kas jāatceras

  • Konstruktoru nevar mantot Java valodā.
  • Privātie dalībnieki Java netiek mantoti.
  • Java nav atļauta cikliska mantošana.
  • Piešķiriet vecāku atsauci bērnu objektiem.
  • Konstruktori tiek izpildīti, jo konstruktorā atrodas super().

Mantojuma veidi

Java atbalsta šādus četrus mantojuma veidus:

  • Vienotais mantojums
  • Daudzlīmeņu mantošana
  • Hierarhiskā mantošana
  • Hibrīda mantošana
Mantojuma veidi Java valodā

Piezīme. Java netiek atbalstīta vairākkārtēja mantošana.

Apspriedīsim katru ar atbilstošu piemēru.

Vienotais mantojums

Viena mantojuma gadījumā apakšklase tiek atvasināta tikai no vienas superklases. Tas pārmanto viena vecāka klases īpašības un uzvedību. Dažreiz to sauc arī par vienkāršs mantojums .

apakšvirkne java
Mantojuma veidi Java valodā

Iepriekš redzamajā attēlā Darbinieks ir vecāku klase, bet izpilddirektors ir bērnu klase. Executive klase manto visas Darbinieku klases īpašības.

Ieviesīsim vienoto mantojuma mehānismu Java programmā.

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

Izvade:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Daudzlīmeņu mantošana

In daudzlīmeņu mantojums , klase ir atvasināta no klases, kas arī ir atvasināta no citas klases, tiek saukta par daudzlīmeņu mantojumu. Vienkāršiem vārdiem sakot, mēs varam teikt, ka klasi, kurā ir vairāk nekā viena vecāka klase, sauc par daudzlīmeņu mantojumu. Ņemiet vērā, ka nodarbībām jābūt dažādos līmeņos. Tādējādi pastāv viena bāzes klase un viena atvasināta klase, bet vairākas starpposma bāzes klases.

Mantojuma veidi Java valodā

Iepriekš redzamajā attēlā klase Marks manto klases Studenti dalībniekus vai metodes. Klase Sports manto klases Marks dalībniekus. Tāpēc Skolēnu klase ir klases Marks vecāku klase un klase Marks ir klases Sports. Tādējādi klase Sports netieši manto Studenta īpašības kopā ar klasi Atzīmes.

Ieviesīsim daudzlīmeņu mantojuma mehānismu Java programmā.

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

Izvade:

 registration number= 0987 marks= 78.0 score= 68.7 

Hierarhiskā mantošana

Ja vairākas klases ir atvasinātas no vienas bāzes klases, to sauc hierarhiskā mantošana .

Mantojuma veidi Java valodā

Iepriekš redzamajā attēlā klases Zinātne, Tirdzniecība un Māksla manto viena vecāka klasi Students.

Ieviesīsim hierarhisko mantojuma mehānismu Java programmā.

java oops jēdzieni

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

Izvade:

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

Hibrīda mantošana

Hibrīdie līdzekļi sastāv no vairāk nekā viena. Hibrīda mantošana ir divu vai vairāku mantojuma veidu kombinācija.

Mantojuma veidi Java valodā

Iepriekš redzamajā attēlā vectēvs ir superklase. Tēva šķira manto Vectēva klases īpašības. Tā kā Tēvs un vectēvs pārstāv vienu mantojumu. Turklāt Tēva klasi manto Dēls un meita. Tādējādi Tēvs kļūst par dēla un meitas vecāku klasi. Šīs klases pārstāv hierarhisko mantojumu. Kopā tas apzīmē hibrīda mantojumu.

karte mašīnrakstā

Ieviesīsim hibrīda mantojuma mehānismu Java programmā.

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

Izvade:

 I am daughter. 

Vairāku mantojumu (nav atbalstīts)

Java neatbalsta vairākus mantojumus neskaidrības dēļ. Piemēram, apsveriet šādu Java programmu.

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

Iepriekš minētais kods rada kļūdu, jo kompilators nevar izlemt, kura ziņojuma () metode ir jāizsauc. Šī iemesla dēļ Java neatbalsta vairākus mantojumus klases līmenī, bet to var panākt, izmantojot saskarne .