I denne opplæringen vil vi lære om Java-arv og dens typer ved hjelp av eksempel.
Arv er en av nøkkelfunksjonene i OOP som lar oss lage en ny klasse fra en eksisterende klasse.
Den nye klassen som opprettes er kjent som underklasse (underordnet eller avledet klasse), og den eksisterende klassen hvorfra barneklassen er avledet er kjent som superklasse (overordnet eller basisklasse).
Den extends
nøkkelordet brukes til å utføre arv i Java. For eksempel,
class Animal ( // methods and fields ) // use of extends keyword // to perform inheritance class Dog extends Animal ( // methods and fields of Animal // methods and fields of Dog )
I eksemplet ovenfor opprettes hundeklassen ved å arve metodene og feltene fra dyreklassen.
Her er Dog underklassen og Animal er superklassen.
Eksempel 1: Java Arv
class Animal ( // field and method of the parent class String name; public void eat() ( System.out.println("I can eat"); ) ) // inherit from Animal class Dog extends Animal ( // new method in subclass public void display() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access field of superclass labrador.name = "Rohu"; labrador.display(); // call method of superclass // using object of subclass labrador.eat(); ) )
Produksjon
Jeg heter Rohu jeg kan spise
I eksemplet ovenfor har vi avledet en underklasse Dog fra superklasse Animal. Legg merke til uttalelsene,
labrador.name = "Rohu"; labrador.eat();
Her er labrador et objekt for hunden. Navnet og eat()
er imidlertid medlemmene i dyreklassen.
Siden hund arver feltet og metoden fra Animal, er vi i stand til å få tilgang til feltet og metoden ved hjelp av objektet til hunden.

er-et forhold
I Java er arv et is-a forhold. Det vil si at vi bare bruker arv hvis det eksisterer et forhold mellom to klasser. For eksempel,
- Bil er et kjøretøy
- Appelsin er en frukt
- Kirurg er lege
- Hund er et dyr
Her kan bil arve fra kjøretøy , oransje kan arve fra frukt og så videre.
Metodeoverstyring i Java-arv
I eksempel 1 ser vi at objektet til underklassen kan få tilgang til metoden til superklassen.
Men hvis den samme metoden er tilstede i både superklassen og underklassen, hva vil skje?
I dette tilfellet overstyrer metoden i underklassen metoden i superklassen. Dette konseptet er kjent som metodeoverstyring i Java.
Eksempel 2: Metodeoverstyring i Java Arv
class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )
Produksjon
Jeg spiser hundemat jeg kan bjeffe
I eksemplet ovenfor er eat()
metoden til stede i både superklassen Animal og underklassen Dog.
Her har vi laget et objekt labrador av hund.
Nå når vi ringer eat()
ved hjelp av objektet labrador, kalles metoden i Dog. Dette er fordi metoden i den avledede klassen overstyrer metoden i basisklassen.
Dette kalles metodeoverstyring. For å lære mer, besøk Java Method Overriding.
Merk : Vi har brukt @Override
merknaden for å fortelle kompilatoren at vi overstyrer en metode. Merknaden er imidlertid ikke obligatorisk. Hvis du vil lære mer, kan du gå til Java-merknader.
super Keyword i Java Arv
Tidligere så vi at den samme metoden i underklassen overstyrer metoden i superklasse.
I en slik situasjon brukes super
nøkkelordet til å kalle metoden til foreldreklassen fra metoden til barneklassen.
Eksempel 3: super Keyword in Arv
class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( // call method of superclass super.eat(); System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )
Produksjon
Jeg kan spise Jeg spiser hundemat jeg kan bjeffe
I eksemplet ovenfor er eat()
metoden til stede i både basisklassen Animal og den avledede klassen Dog. Legg merke til uttalelsen,
super.eat();
Her brukes super
nøkkelordet for å kalle eat()
metoden som er tilstede i superklassen.
Vi kan også bruke super
nøkkelordet til å ringe konstruktøren til superklassen fra konstruktøren til underklassen. For å lære mer, besøk Java super søkeord .
beskyttede medlemmer i arv
I Java, hvis en klasse inneholder protected
felt og metoder, er disse feltene og metodene tilgjengelige fra underklassen til klassen.
Example 4: protected Members in Inheritance
class Animal ( protected String name; protected void display() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void getInfo() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access protected field and method // using the object of subclass labrador.name = "Rocky"; labrador.display(); labrador.getInfo(); ) )
Output
I am an animal. My name is Rocky
In the above example, we have created a class named Animal. The class includes a protected field: name and a method: display()
.
We have inherited the Dog class inherits Animal. Notice the statement,
labrador.name = "Rocky"; labrador.display();
Here, we are able to access the protected field and method of the superclass using the labrador object of the subclass.
Why use inheritance?
- The most important use of inheritance in Java is code reusability. The code that is present in the parent class can be directly used by the child class.
- Method overriding is also known as runtime polymorphism. Hence, we can achieve Polymorphism in Java with the help of inheritance.
Types of inheritance
There are five types of inheritance.
1. Single Inheritance
I enkelt arv strekker en enkelt underklasse seg fra en enkelt superklasse. For eksempel,

2. Arv på flere nivåer
I arv på flere nivåer strekker en underklasse seg fra en superklasse, og deretter fungerer den samme underklassen som en superklasse for en annen klasse. For eksempel,

3. Hierarkisk arv
I hierarkisk arv strekker flere underklasser seg fra en enkelt superklasse. For eksempel,

4. Flere arv
I flere arv strekker en enkelt underklasse seg fra flere superklasser. For eksempel,

Merk : Java støtter ikke flere arv. Imidlertid kan vi oppnå flere arv ved hjelp av grensesnitt. For å lære mer, besøk Java implementerer flere arv.
5. Hybrid arv
Hybrid arv er en kombinasjon av to eller flere typer arv. For eksempel,

Her har vi kombinert hierarkisk og flere arv for å danne en hybrid arv.