logo

Arv i Java

  1. Arv
  2. Typer av arv
  3. Hvorfor multippel arv ikke er mulig i Java i tilfelle klasse?

Arv i Java er en mekanisme der ett objekt erverver alle egenskapene og oppførselen til et overordnet objekt. Det er en viktig del av OOPs (Objektorientert programmeringssystem).

Tanken bak arv i Java er at du kan lage nye klasser som er bygget på eksisterende klasser. Når du arver fra en eksisterende klasse, kan du gjenbruke metoder og felt i overordnet klasse. Dessuten kan du legge til nye metoder og felt i din nåværende klasse også.

Arv representerer ER-ET forhold som også er kjent som en foreldre-barn forhold.

Hvorfor bruke arv i java

Begreper som brukes i arv

    Klasse:En klasse er en gruppe objekter som har felles egenskaper. Det er en mal eller blåkopi som objekter lages fra.Underklasse/barneklasse:Underklasse er en klasse som arver den andre klassen. Det kalles også en avledet klasse, utvidet klasse eller barneklasse.Superklasse/foreldreklasse:Superklasse er klassen der en underklasse arver funksjonene. Det kalles også en basisklasse eller en overordnet klasse.Gjenbrukbarhet:Som navnet angir, er gjenbruk en mekanisme som gjør det mulig for deg å gjenbruke feltene og metodene til den eksisterende klassen når du oppretter en ny klasse. Du kan bruke de samme feltene og metodene som allerede er definert i forrige klasse.

Syntaksen til Java Inheritance

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

De utvider nøkkelordet indikerer at du lager en ny klasse som stammer fra en eksisterende klasse. Betydningen av 'utvider' er å øke funksjonaliteten.

boblesorteringspyton

I Java-terminologien kalles en klasse som er arvet en forelder eller superklasse, og den nye klassen kalles barn eller underklasse.


Eksempel på Java-arv

Arv i Java

Som vist i figuren ovenfor, er programmerer underklassen og ansatt er superklassen. Forholdet mellom de to klassene er Programmerer IS-A ansatt . Det betyr at programmerer er en type ansatt.

hvordan konvertere streng til int java
 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 nå
 Programmer salary is:40000.0 Bonus of programmer is:10000 

I eksemplet ovenfor kan Programmer-objektet få tilgang til feltet for egen klasse så vel som av Employee-klassen, dvs. gjenbrukbarhet av kode.


Typer av arv i java

På grunnlag av klasse kan det være tre typer arv i java: enkelt, flernivå og hierarkisk.

I java-programmering støttes multippel og hybrid arv kun via grensesnitt. Vi vil lære om grensesnitt senere.

Typer av arv i Java

Merk: Multippel arv støttes ikke i Java gjennom klasse.

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

Multippel arv i Java

Enkeltarv eksempel

Når en klasse arver en annen klasse, er den kjent som en enkeltarv . I eksemplet nedenfor arver hundeklassen Animal-klassen, så det er enkeltarven.

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

Produksjon:

 barking... eating... 

Eksempel på arv på flere nivåer

Når det er en arvekjede, er det kjent som flernivåarv . Som du kan se i eksemplet nedenfor, arver BabyDog-klassen Dog-klassen som igjen arver Animal-klassen, så det er en flernivåarv.

Fil: TestInheritance2.java

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

Produksjon:

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

Hierarkisk arv eksempel

Når to eller flere klasser arver en enkelt klasse, kalles den hierarkisk arv . I eksemplet nedenfor arver hunde- og katteklassene dyreklassen, så det 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 }} 

Produksjon:

c program for strengsammenligning
 meowing... eating... 

Sp) Hvorfor multippel arv ikke støttes i java?

For å redusere kompleksiteten og forenkle språket, støttes ikke multippel arv i java.

Tenk på et scenario der A, B og C er tre klasser. C-klassen arver A- og B-klassene. Hvis A- og B-klassene har samme metode og du kaller det fra et barneklasseobjekt, vil det være tvetydighet å kalle metoden til A- eller B-klassen.

Siden kompileringstidsfeil er bedre enn kjøretidsfeil, gjengir Java kompileringstidsfeil hvis du arver 2 klasser. Så enten du har samme metode eller annen, vil det være kompileringstidsfeil.

 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 nå
 Compile Time Error