Šajā apmācībā mēs ar piemēra palīdzību uzzināsim par Java mantojumu un tā veidiem.
Mantošana ir viena no OOP galvenajām iezīmēm, kas ļauj mums izveidot jaunu klasi no esošās klases.
Izveidotā jaunā klase ir pazīstama kā apakšklase (bērnu vai atvasinātā klase), un esošā klase, no kuras atvasināta bērnu klase, ir dēvēta par superklasi (vecāku vai pamatklasi).
extends
Atslēgvārds tiek izmantots, lai veiktu mantojumu Java. Piemēram,
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 )
Iepriekš minētajā piemērā suņu klase tiek izveidota, mantojot metodes un laukus no klases Dzīvnieki.
Šeit suns ir apakšklase un dzīvnieks - superklase.
1. piemērs: Java mantojums
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(); ) )
Rezultāts
Mani sauc Rohu, es varu ēst
Iepriekš minētajā piemērā mēs esam ieguvuši apakšklases suni no superklases Animal. Ievērojiet paziņojumus,
labrador.name = "Rohu"; labrador.eat();
Šeit labradors ir Suņa objekts. Tomēr nosauciet un eat()
esat Dzīvnieku klases locekļi.
Tā kā suns pārņem lauku un metodi no Animal, mēs varam piekļūt laukam un metodei, izmantojot suņa objektu.

ir-attiecības
Java, mantojums ir ir-a attiecības. Tas ir, mēs izmantojam mantojumu tikai tad, ja starp divām klasēm pastāv saikne. Piemēram,
- Automašīna ir transportlīdzeklis
- Apelsīns ir auglis
- Ķirurgs ir ārsts
- Suns ir dzīvnieks
Šeit automašīna var mantot no transportlīdzekļa , oranža - no augļiem utt.
Metodes ignorēšana Java mantojumā
1. piemērā mēs redzam, ka apakšklases objekts var piekļūt virsklases metodei.
Tomēr, ja viena un tā pati metode ir gan superklasē, gan apakšklasē, kas notiks?
Šajā gadījumā apakšklases metode ignorē metodi, kas atrodas virsklasē. Šis jēdziens ir pazīstams kā Java svarīgākā metode.
2. piemērs: Java mantojuma ignorēšana
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(); ) )
Rezultāts
Es ēdu suņu barību, kuru varu mizot
Iepriekš minētajā piemērā eat()
metode ir gan superklases dzīvniekam, gan apakšklases sunim.
Šeit mēs esam izveidojuši objektu Labrador of Dog.
Tagad, kad mēs saucam eat()
objektu par labradoru, tiek izsaukta metode Dog iekšienē. Tas ir tāpēc, ka atvasinātās klases metode ignorē metodi bāzes klasē.
To sauc par metodes ignorēšanu. Lai uzzinātu vairāk, apmeklējiet Java metodes ignorēšanu.
Piezīme . Mēs esam izmantojuši @Override
anotāciju, lai kompilatoram pateiktu, ka mēs ignorējam metodi. Tomēr anotācija nav obligāta. Lai uzzinātu vairāk, apmeklējiet Java anotācijas.
super atslēgvārds Java mantojumā
Iepriekš mēs redzējām, ka tā pati apakšklases metode ignorē metodi superklasē.
Šādā situācijā super
atslēgvārds tiek izmantots, lai izsauktu vecāku klases metodi no bērnu klases metodes.
3. piemērs: super atslēgvārds mantojumā
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(); ) )
Rezultāts
Es varu ēst Es ēdu suņu barību, es varu mizu
Iepriekš minētajā piemērā eat()
metode ir sastopama gan pamatklasē Dzīvnieki, gan atvasinātajā klasē Suns. Ievērojiet paziņojumu,
super.eat();
Šeit super
atslēgvārds tiek izmantots, lai izsauktu eat()
virsklasē esošo metodi.
Varam arī izmantot super
atslēgvārdu, lai izsauktu superklases konstruktoru no apakšklases konstruktora. Lai uzzinātu vairāk, apmeklējiet Java super atslēgvārdu .
aizsargātie mantojuma locekļi
Ja Java klasē ir protected
lauki un metodes, šie lauki un metodes ir pieejamas no klases apakšklases.
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
Vienā mantojumā viena apakšklase stiepjas no vienas superklases. Piemēram,

2. Daudzlīmeņu mantojums
Daudzlīmeņu mantojumā apakšklase iziet no virsklases, un tad tā pati apakšklase darbojas kā citas klases superklase. Piemēram,

3. Hierarhiska mantošana
Hierarhiskā mantojumā vairākas apakšklases stiepjas no vienas augstākās klases. Piemēram,

4. Vairāku mantojumu
Vairāku mantojumu gadījumā viena apakšklase stiepjas no vairākām superklasēm. Piemēram,

Piezīme : Java neatbalsta vairākkārtēju mantošanu. Tomēr mēs varam panākt vairākkārtēju mantošanu, izmantojot saskarnes. Lai uzzinātu vairāk, apmeklējiet Java īsteno vairākkārtēju mantojumu.
5. Hibrīda mantojums
Hibrīdā mantošana ir divu vai vairāku mantojuma veidu kombinācija. Piemēram,

Šeit mēs esam apvienojuši hierarhisko un daudzkārtējo mantojumu, veidojot hibrīdu mantojumu.