logo

Arv i Java

  1. Arv
  2. Typer av arv
  3. Varför är multipelt arv inte möjligt i Java i händelse av klass?

Arv i Java är en mekanism där ett objekt förvärvar alla egenskaper och beteenden hos ett överordnat objekt. Det är en viktig del av Hoppsan (Objektorienterat programmeringssystem).

Tanken bakom arv i Java är att du kan skapa nytt klasser som bygger på befintliga klasser. När du ärver från en befintlig klass kan du återanvända metoder och fält för den överordnade klassen. Dessutom kan du lägga till nya metoder och fält i din nuvarande klass också.

Arv representerar IS-A relation som också är känd som en förälder-barn relation.

Varför använda arv i java

Termer som används i Arv

    Klass:En klass är en grupp av objekt som har gemensamma egenskaper. Det är en mall eller ritning från vilken objekt skapas.Underklass/barnklass:Underklass är en klass som ärver den andra klassen. Det kallas också en härledd klass, utökad klass eller barnklass.Superklass/förälderklass:Superklass är klassen varifrån en underklass ärver egenskaperna. Det kallas också en basklass eller en förälderklass.Återanvändbarhet:Som namnet anger är återanvändbarhet en mekanism som underlättar för dig att återanvända den befintliga klassens fält och metoder när du skapar en ny klass. Du kan använda samma fält och metoder som redan definierats i föregående klass.

Syntaxen för Java Arv

 class Subclass-name extends Superclass-name { //methods and fields } 

De utökar nyckelordet indikerar att du skapar en ny klass som härrör från en befintlig klass. Meningen med 'förlänger' är att öka funktionaliteten.

abstrakt klass i java

I Javas terminologi kallas en klass som ärvs en förälder eller superklass, och den nya klassen kallas barn eller underklass.


Java-arvsexempel

Arv i Java

Som visas i bilden ovan är programmerare underklassen och anställd är superklassen. Relationen mellan de två klasserna är Programmerare IS-A Anställd . Det betyder att programmerare är en typ av anställd.

arp ett kommando
 class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } } 
Testa det nu
 Programmer salary is:40000.0 Bonus of programmer is:10000 

I exemplet ovan kan Programmer-objektet komma åt fältet för egen klass såväl som för Employee-klassen, dvs kodåteranvändbarhet.


Typer av arv i java

Baserat på klass kan det finnas tre typer av arv i java: singel, multilevel och hierarkisk.

I java-programmering stöds multipel- och hybridarv endast via gränssnitt. Vi kommer att lära oss om gränssnitt senare.

Typer av arv i Java

Obs: Multipelarv stöds inte i Java genom klass.

När en klass ärver flera klasser är det känt som multipelt arv. Till exempel:

Multipelt arv i Java

Enkelt arv Exempel

När en klass ärver en annan klass kallas det en enskilt arv . I exemplet nedan ärver klassen Hund klassen Djur, så det finns ett enda arv.

maskinskriven för varje

Fil: TestInheritance.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }} 

Produktion:

 barking... eating... 

Exempel på arv på flera nivåer

När det finns en arvskedja kallas det arv på flera nivåer . Som du kan se i exemplet nedan, ärver BabyDog-klassen Dog-klassen som återigen ärver Animal-klassen, så det finns ett arv på flera nivåer.

Fil: TestInheritance2.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }} 

Produktion:

 weeping... barking... eating... 

Hierarkiskt arvsexempel

När två eller flera klasser ärver en enda klass kallas den hierarkiskt arv . I exemplet nedan ärver hund- och kattklasserna Animal-klassen, så det finns hierarkiskt arv.

Fil: TestInheritance3.java

ogiltig 0
 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }} 

Produktion:

 meowing... eating... 

F) Varför stöds inte multipelt arv i java?

För att minska komplexiteten och förenkla språket stöds inte multipelt arv i java.

Tänk på ett scenario där A, B och C är tre klasser. C-klassen ärver A- och B-klasserna. Om A- och B-klasser har samma metod och du anropar det från ett underordnat klassobjekt, blir det oklarhet att anropa metoden för A- eller B-klass.

Eftersom kompileringsfel är bättre än körtidsfel, återger Java kompileringsfel om du ärver 2 klasser. Så oavsett om du har samma metod eller annorlunda, kommer det att finnas kompileringstidsfel.

 class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } } 
Testa det nu
 Compile Time Error