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 ).
extends
Avainsanaa 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.

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 @Override
kertoneet 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,

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

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

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

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,

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