I den här handledningen lär vi oss om Java-arv och dess typer med hjälp av exempel.
Arv är en av de viktigaste funktionerna i OOP som gör att vi kan skapa en ny klass från en befintlig klass.
Den nya klassen som skapas kallas underklass ( underklass eller härledd klass) och den befintliga klassen från vilken barnklassen härrör kallas superklass (överordnad eller basklass).
Det extends
nyckelordet används för att utföra arv i Java. Till exempel,
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 exemplet ovan skapas hundklassen genom att ärva metoderna och fälten från djurklassen.
Här är Dog underklassen och Animal är superklassen.
Exempel 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(); ) )
Produktion
Jag heter Rohu, jag kan äta
I exemplet ovan har vi härledt en underklass Hund från superklass Animal. Lägg märke till uttalandena,
labrador.name = "Rohu"; labrador.eat();
Här är labrador ett föremål för hund. Men namnge och eat()
är medlemmar i djurklassen.
Eftersom Hund ärver fältet och metoden från Animal, kan vi komma åt fältet och metoden med hjälp av hundens objekt.

är-ett förhållande
I Java är arv en förhållande. Det vill säga, vi använder endast arv om det finns ett förhållande mellan två klasser. Till exempel,
- Bil är ett fordon
- Orange är en frukt
- Kirurg är läkare
- Hund är ett djur
Här kan bilen ärva från fordonet , orange kan ärva från frukt och så vidare.
Metod Åsidosättande i Java-arv
I exempel 1 ser vi föremålet för underklassen kan komma åt metoden för superklassen.
Men om samma metod finns i både superklassen och underklassen, vad händer?
I det här fallet åsidosätter metoden i underklassen metoden i superklassen. Detta koncept är känt som metodöverstyrning i Java.
Exempel 2: Metod åsidosättande i Java Inheritance
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(); ) )
Produktion
Jag äter hundmat jag kan skälla
I exemplet ovan är eat()
metoden närvarande i både superklassen Animal och underklassen Dog.
Här har vi skapat ett objekt labrador av hund.
Nu när vi ringer eat()
med objektet labrador kallas metoden inuti Dog. Detta beror på att metoden i den härledda klassen åsidosätter metoden i basklassen.
Detta kallas metodöverstyrning. För att lära dig mer, besök Java Method Overriding.
Obs! Vi har använt @Override
anteckningen för att berätta för kompilatorn att vi åsidosätter en metod. Annoteringen är dock inte obligatorisk. Om du vill veta mer besöker du Java-anteckningar.
super Keyword i Java Arv
Tidigare såg vi att samma metod i underklassen åsidosätter metoden i superklass.
I en sådan situation används super
nyckelordet för att anropa metoden för föräldraklassen från metoden för barnklassen.
Exempel 3: super nyckelord i 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(); ) )
Produktion
Jag kan äta Jag äter hundmat Jag kan skälla
I exemplet ovan är eat()
metoden närvarande i både basklassen Animal och den härledda klassen Dog. Lägg märke till uttalandet,
super.eat();
Här används super
nyckelordet för att anropa eat()
metoden som finns i superklassen.
Vi kan också använda super
nyckelordet för att anropa superklassens konstruktör från underklassens konstruktör. Om du vill veta mer besöker du Java super-sökord .
skyddade medlemmar i arv
I Java, om en klass innehåller protected
fält och metoder, är dessa fält och metoder tillgängliga från underklassen i 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 enstaka arv sträcker sig en enda underklass från en enda superklass. Till exempel,

2. Arv på flera nivåer
I arv med flera nivåer sträcker sig en underklass från en superklass och sedan fungerar samma underklass som en superklass för en annan klass. Till exempel,

3. Hierarkisk arv
I hierarkisk arv sträcker sig flera underklasser från en enda superklass. Till exempel,

4. Multipel arv
I flera arv sträcker sig en enda underklass från flera superklasser. Till exempel,

Obs! Java stöder inte flera arv. Vi kan dock uppnå flera arv med gränssnitt. För att lära dig mer, besök Java implementerar flera arv.
5. Hybrid arv
Hybrid arv är en kombination av två eller flera typer av arv. Till exempel,

Här har vi kombinerat hierarkiskt och multipelt arv för att bilda en hybridärv.