Java mantojums (ar piemēriem)

Š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).

extendsAtslē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.

Java mantojuma ieviešana

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 @Overrideanotā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ā superatslē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 superatslēgvārds tiek izmantots, lai izsauktu eat()virsklasē esošo metodi.

Varam arī izmantot superatslē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 protectedlauki 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,

Java vienotā mantošana

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,

Java daudzlīmeņu mantojums

3. Hierarhiska mantošana

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

Java hierarhiskā mantošana

4. Vairāku mantojumu

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

Java vairākkārtēja mantošana

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,

Java hibrīdā mantošana

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

Interesanti raksti...