logo

Arv i Java

  1. Arv
  2. Arvetyper
  3. Hvorfor multipel arv ikke er mulig i Java i tilfælde af klasse?

Arv i Java er en mekanisme, hvor et objekt erhverver alle egenskaber og adfærd fra et overordnet objekt. Det er en vigtig del af OOPs (Objektorienteret programmeringssystem).

Ideen bag arv i Java er, at du kan skabe nyt klasser der er bygget på eksisterende klasser. Når du arver fra en eksisterende klasse, kan du genbruge metoder og felter i den overordnede klasse. Desuden kan du tilføje nye metoder og felter i din nuværende klasse også.

Arv repræsenterer ER-ET forhold som også er kendt som en forældre-barn forhold.

Hvorfor bruge arv i java

Begreber brugt i Arv

    Klasse:En klasse er en gruppe af objekter, der har fælles egenskaber. Det er en skabelon eller blueprint, som objekter oprettes ud fra.Underklasse/barneklasse:Underklasse er en klasse, som arver den anden klasse. Det kaldes også en afledt klasse, udvidet klasse eller børneklasse.Superklasse/forældreklasse:Superklasse er den klasse, hvorfra en underklasse arver funktionerne. Det kaldes også en basisklasse eller en overordnet klasse.Genanvendelighed:Som navnet angiver, er genbrug en mekanisme, der gør det lettere for dig at genbruge felterne og metoderne i den eksisterende klasse, når du opretter en ny klasse. Du kan bruge de samme felter og metoder, som allerede er defineret i den forrige klasse.

Syntaksen for Java Inheritance

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

Det udvider søgeord angiver, at du laver en ny klasse, der stammer fra en eksisterende klasse. Betydningen af ​​'forlænger' er at øge funktionaliteten.

10 potens af 6

I Javas terminologi kaldes en klasse, som er nedarvet, en forælder eller superklasse, og den nye klasse kaldes barn eller underklasse.


Eksempel på Java-arv

Arv i Java

Som vist i ovenstående figur er programmør underklassen, og medarbejder er superklassen. Forholdet mellem de to klasser er Programmer IS-A medarbejder . Det betyder, at programmør er en type medarbejder.

begrænsninger af e-bank
 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); } } 
Test det nu
 Programmer salary is:40000.0 Bonus of programmer is:10000 

I ovenstående eksempel kan Programmer-objektet få adgang til feltet for egen klasse såvel som for Employee-klassen, dvs. kodegenanvendelighed.


Typer af arv i java

På basis af klasse kan der være tre typer af arv i java: enkelt, multilevel og hierarkisk.

I java-programmering understøttes multipel og hybrid nedarvning kun via interface. Vi lærer om grænseflader senere.

Typer af arv i Java

Bemærk: Multipel nedarvning er ikke understøttet i Java gennem klasse.

Når en klasse arver flere klasser, er det kendt som multipel arv. For eksempel:

Multipel arv i Java

Enkeltarv eksempel

Når en klasse arver en anden klasse, er den kendt som en enkeltarv . I eksemplet nedenfor arver hundeklassen Animal-klassen, så der er den enkelte arv.

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... 

Eksempel på arv på flere niveauer

Når der er en arvekæde, er det kendt som arv på flere niveauer . Som du kan se i eksemplet nedenfor, arver BabyDog-klassen Dog-klassen, som igen arver Animal-klassen, så der er en arv på flere niveauer.

Fil: TestInheritance2.java

json fra java-objekt
 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... 

Hierarkisk arveeksempel

Når to eller flere klasser arver en enkelt klasse, er den kendt som hierarkisk arv . I eksemplet nedenfor arver hunde- og katklasser klassen Animal, så der er hierarkisk arv.

Fil: TestInheritance3.java

 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:

gimp hvordan man fravælger
 meowing... eating... 

Q) Hvorfor multipel nedarvning ikke understøttes i java?

For at reducere kompleksiteten og forenkle sproget understøttes multipel nedarvning ikke i java.

Overvej et scenarie, hvor A, B og C er tre klasser. C-klassen arver A- og B-klasserne. Hvis A- og B-klasser har samme metode, og du kalder det fra et underordnet klasseobjekt, vil der være tvetydighed at kalde metoden for A- eller B-klasse.

Da kompileringsfejl er bedre end runtime-fejl, gengiver Java kompileringsfejl, hvis du arver 2 klasser. Så uanset om du har samme metode eller anderledes, vil der være kompileringstidsfejl.

 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? } } 
Test det nu
 Compile Time Error