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
- Til Metodeoverstyring (så runtime polymorfisme kan bli oppnådd).
- For gjenbruk av kode.
Begreper som brukes i arv
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
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.
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:
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