logo

Typer av arv i Java

Arv är den mest kraftfulla funktionen i objektorienterad programmering. Det tillåter oss att ärva egenskaperna hos en klass till en annan klass. I det här avsnittet kommer vi att diskutera typer av arv i Java fördjupad med verkliga exempel. Vi kommer också att skapa Java-program för att implementera konceptet med olika typer av arv.

Arv

Arv är en mekanism för att driva en ny klass från en befintlig klass. Den befintliga (gamla) klassen är känd som basklass eller superklass eller föräldraklass . Den nya klassen är känd som en härledd klass eller underklass eller barnklass . Det tillåter oss att använda egenskaperna och beteendet hos en klass (förälder) i en annan klass (barn).

En klass vars egenskaper ärvs kallas föräldraklass och en klass som ärver den överordnade klassens egenskaper kallas barnklass . Således upprättar det ett förhållande mellan förälder och barnklass som är känd som förälder-barn eller Är en relation.

konvertera sträng till json i java

Anta att det finns två klasser som heter Far och Barn och vi vill ärva Faderklassens egenskaper i Barnklassen. Vi kan uppnå detta genom att använda sträcker sig nyckelord.

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

Typer av arv i Java

När ska vi använda arv?

Arv ger återanvändbarhet kod, särskilt när det finns en stor skala av kod att återanvända. Det fastställer också förhållandet mellan olika klasser som är känt som en Är en relation. Vi kan också använda det om vi vill uppnå metod åsidosättande .

Punkter att komma ihåg

  • Constructor kan inte ärvas i Java.
  • Privata medlemmar ärvs inte i Java.
  • Cyklisk arv är inte tillåtet i Java.
  • Tilldela överordnad referens till underordnade objekt.
  • Konstruktörer exekveras på grund av super() som finns i konstruktorn.

Typer av arv

Java stöder följande fyra typer av arv:

  • Enstaka arv
  • Arv på flera nivåer
  • Hierarkiskt arv
  • Hybrid arv
Typer av arv i Java

Obs: Flera arv stöds inte i Java.

Låt oss diskutera var och en med rätt exempel.

Enstaka arv

Vid enkelarv härleds en underklass från endast en superklass. Den ärver egenskaperna och beteendet hos en ensamförälderklass. Ibland är det också känt som enkelt arv .

Typer av arv i Java

I figuren ovan är Anställd en föräldraklass och Executive är en barnklass. Klassen Executive ärver alla egenskaper i klassen Employee.

Låt oss implementera den enda arvsmekanismen i ett Java-program.

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

Produktion:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Arv på flera nivåer

I arv på flera nivåer , en klass härleds från en klass som också härrör från en annan klass kallas multi-level arv. Med enkla ord kan vi säga att en klass som har mer än en föräldraklass kallas multi-level arv. Observera att klasserna måste vara på olika nivåer. Därför finns det en enda basklass och en enda härledd klass men flera mellanliggande basklasser.

java konvertera int till sträng
Typer av arv i Java

I figuren ovan ärver klassens poäng medlemmarna eller metoderna från klassen Studenter. Klassen Idrott ärver medlemmarna i klassen Betyg. Därför är Studentklassen klassens föräldraklass Marks och klassen Marks är föräldern till klassen Sports. Därför ärver klassen Sport implicit studentens egenskaper tillsammans med klassbetygen.

Låt oss implementera arvsmekanismen på flera nivåer i ett Java-program.

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

Produktion:

 registration number= 0987 marks= 78.0 score= 68.7 

Hierarkiskt arv

Om ett antal klasser härleds från en enda basklass kallas den hierarkiskt arv .

Typer av arv i Java

I figuren ovan ärver klasserna Science, Commerce och Arts en ensamförälderklass som heter Student.

Låt oss implementera den hierarkiska arvsmekanismen i ett Java-program.

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

Produktion:

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

Hybrid arv

Hybridmedel består av mer än en. Hybrid arv är kombinationen av två eller flera typer av arv.

Typer av arv i Java

I ovanstående figur är farfar en superklass. Faderklassen ärver farfarsklassens egenskaper. Eftersom far och farfar representerar enstaka arv. Vidare ärvs Faderklassen av Son och Dotterklassen. Därmed blir Fadern föräldraklass för Son och Dotter. Dessa klasser representerar det hierarkiska arvet. Tillsammans betecknar det hybridarvet.

Låt oss implementera hybridarvsmekanismen i ett Java-program.

ubuntu bygga viktigt

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

Produktion:

 I am daughter. 

Multipelt arv (stöds inte)

Java stöder inte flera arv på grund av tvetydighet. Tänk till exempel på följande Java-program.

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

Ovanstående kod ger fel eftersom kompilatorn inte kan bestämma vilken message()-metod som ska anropas. På grund av denna anledning stöder Java inte flera arv på klassnivå utan kan uppnås genom en gränssnitt .