Java-perintö (esimerkkejä)

Tässä opetusohjelmassa opitaan Java-perinnöstä ja sen tyypeistä esimerkin avulla.

Perintö on yksi OOP: n pääominaisuuksista, jonka avulla voimme luoda uuden luokan olemassa olevasta luokasta.

Luotava uusi luokka tunnetaan alaluokkana (lapsi tai johdettu luokka) ja nykyinen luokka, josta lapsiluokka on johdettu, tunnetaan yläluokana (vanhempi tai perusluokka ).

extendsAvainsanaa käytetään suorittamaan perintö Java. Esimerkiksi,

 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 )

Yllä olevassa esimerkissä Koiraluokka luodaan perimällä menetelmät ja kentät Eläinluokasta.

Tässä koira on alaluokka ja eläin on yläluokka.

Esimerkki 1: Java-perintö

 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(); ) )

Tuotos

 Nimeni on Rohu, voin syödä

Yllä olevassa esimerkissä olemme johtaneet alaluokan Koira superluokan Eläimestä. Huomaa lausunnot,

 labrador.name = "Rohu"; labrador.eat();

Täällä labrador on koiran kohde. Nimeä ja eat()ole kuitenkin eläinluokan jäseniä.

Koska koira perii kentän ja menetelmän eläimeltä, pääsemme kenttään ja menetelmään koiran objektin avulla.

Java-perintötoteutus

on-suhde

Java, perintö on on-a suhde. Eli käytämme perintöä vain, jos kahden luokan välillä on olemassa-suhde. Esimerkiksi,

  • Auto on ajoneuvo
  • Oranssi on hedelmä
  • Kirurgi on lääkäri
  • Koira on eläin

Täällä auto voi periä ajoneuvosta , Orange voi periä hedelmistä ja niin edelleen.

Menetelmän ohittaminen Java-perinnössä

In esimerkissä 1 , näemme tavoitteena alaluokka voi käyttää menetelmää yläluokaksi.

Jos samaa menetelmää käytetään kuitenkin sekä yliluokassa että alaluokassa, mitä tapahtuu?

Tässä tapauksessa aliluokan menetelmä ohittaa menetelmän yliluokassa. Tämä käsite tunnetaan Java: n ohittavana menetelmänä.

Esimerkki 2: Menetelmä ohittaa Java-perinnön

 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(); ) )

Tuotos

 Syön koiranruokaa, jota voin haukkua

Yllä olevassa esimerkissä eat()menetelmä on läsnä sekä yläluokan eläimessä että alaluokan koirassa.

Täällä olemme luoneet koiran objektilabradorin.

Nyt kun soitamme eat()objektin labradorilla, kutsutaan Koiran sisäistä menetelmää. Tämä johtuu siitä, että johdetun luokan sisäinen menetelmä ohittaa menetelmän perusluokan sisällä.

Tätä kutsutaan menetelmän ohittamiseksi. Lisätietoja on Java Method Overriding -sivulla.

Huomaa : Olemme @Overridekertoneet kääntäjälle merkinnän avulla, että ohitamme menetelmän. Merkintä ei kuitenkaan ole pakollinen. Lisätietoja on Java-merkinnöissä.

super-avainsana Java-perinnössä

Aikaisemmin huomasimme, että sama menetelmä alaluokassa ohittaa menetelmän yliluokassa.

In such a situation, the super keyword is used to call the method of the parent class from the method of the child class.

Example 3: super Keyword in 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() ( // 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(); ) )

Output

 I can eat I eat dog food I can bark 

In the above example, the eat() method is present in both the base class Animal and the derived class Dog. Notice the statement,

 super.eat();

Here, the super keyword is used to call the eat() method present in the superclass.

We can also use the super keyword to call the constructor of the superclass from the constructor of the subclass. To learn more, visit Java super keyword.

protected Members in Inheritance

In Java, if a class includes protected fields and methods, then these fields and methods are accessible from the subclass of the class.

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

Yhdessä perinnössä yksi alaluokka ulottuu yhdestä yläluokasta. Esimerkiksi,

Java-yksittäinen perintö

2. Monitasoinen perintö

Monitasoisessa perinnössä aliluokka ulottuu yläluokasta ja sama aliluokka toimii sitten toisen luokan yliluokana. Esimerkiksi,

Java-monitasoinen perintö

3. Hierarkkinen perintö

Hierarkkisessa perinnössä useat alaluokat ulottuvat yhdestä yläluokasta. Esimerkiksi,

Java-hierarkkinen perintö

4. Moninkertainen perintö

Useissa perinnöissä yksi alaluokka ulottuu useista yläluokista. Esimerkiksi,

Java-moniperintö

Huomaa : Java ei tue useita perintöjä. Voimme kuitenkin saavuttaa useita perintöjä käyttöliittymien avulla. Lisätietoja on osoitteessa Java toteuttaa useita perintöjä.

5. Hybridi-perintö

Hybridiperintö on kahden tai useamman perintötyypin yhdistelmä. Esimerkiksi,

Java-hybridiperintö

Tässä olemme yhdistäneet hierarkkisen ja moninkertaisen perinnön muodostamaan hybridiperinnön.

Mielenkiintoisia artikkeleita...