Selles õpetuses õpime näite abil Java pärimist ja selle tüüpe.
Pärimine on OOP üks põhijooni, mis võimaldab meil olemasolevast klassist uue klassi luua.
Loodav uus klass on tuntud kui alaklass (laps või tuletatud klass) ja olemasolev klass, kust lapseklass on tuletatud, on tuntud kui üleklass (vanem või põhiklass).
extends
Märksõna on kasutatud sooritada pärandi Java. Näiteks,
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 )
Ülaltoodud näites luuakse koerte klass, loovutades meetodid ja väljad loomade klassist.
Siin on koer alaklass ja loom superklass.
Näide 1: Java pärimine
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(); ) )
Väljund
Minu nimi on Rohu, ma võin süüa
Ülaltoodud näites oleme tuletanud superklassist Animal alamklassikoera. Pange tähele avaldusi,
labrador.name = "Rohu"; labrador.eat();
Siin on labrador koera objekt. Kuid nimetage ja eat()
kuuluge loomaklassi.
Kuna koer pärib põllu ja meetodi loomalt, siis pääseme väljale ja meetodile juurde koera objekti kasutades.

on-suhe
Javas on pärimine is-a- suhe. See tähendab, et me kasutame pärimist ainult siis, kui kahe klassi vahel on is-seos. Näiteks,
- Auto on sõiduk
- Apelsin on puu
- Kirurg on arst
- Koer on loom
Siin Auto võib pärida Sõiduki , Orange võib pärida Fruit , ja nii edasi.
Java pärilikkuse alistamise meetod
In Näide 1 , me näeme objekti alamklassi pääseb meetod ülemklassi.
Kui aga sama meetod on olemas nii super- kui alaklassis, siis mis juhtub?
Sellisel juhul alistab alamklassi meetod superklassis oleva meetodi. Seda kontseptsiooni nimetatakse Java-s ülimuslikuks.
Näide 2: Java pärandis ülimuslik meetod
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(); ) )
Väljund
Söön koeratoitu, mida saan haukuda
Ülaltoodud näites on eat()
meetod olemas nii superklassilises loomas kui ka alaklassi koeras.
Siin oleme loonud koera labradori.
Nüüd, kui helistame eat()
objekti labradoriks, kutsutakse Koera meetodit. Seda seetõttu, et tuletatud klassi sees olev meetod alistab baasklassi meetodi.
Seda nimetatakse meetodi ületamiseks. Lisateabe saamiseks külastage Java-meetodi alistamist.
Märkus . Oleme @Override
märkuse abil kompilaatorile öelnud, et me meetodi ületame. Annotatsioon ei ole siiski kohustuslik. Lisateabe saamiseks külastage Java Annotations.
super märksõna Java pärandis
Varem nägime, et sama meetod alamklassis alistab meetodi superklassis.
Sellises olukorras kasutatakse super
märksõna vanemateklassi meetodi kutsumiseks lasteklassi meetodist.
Näide 3: super märksõna pärandis
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(); ) )
Väljund
Ma võin süüa Ma söön koera toitu, mida ma saan haukuda
Ülaltoodud näites on eat()
meetod olemas nii loomade kui ka sellest tuletatud klassi Koer. Pange tähele avaldust,
super.eat();
Siin kasutatakse super
märksõna eat()
superklassis esineva meetodi kutsumiseks .
Samuti võime super
märksõna abil kutsuda alamklassi konstruktorist superklassi konstruktori. Lisateabe saamiseks külastage Java super märksõna .
kaitstud pärandiliikmed
Kui klassis on Java protected
väljad ja meetodid, on need väljad ja meetodid juurdepääsetavad klassi alamklassist.
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
Ühe pärandi korral ulatub üks alamklass ühest üleklassist. Näiteks,

2. Mitmetasandiline pärand
Mitmetasandilise pärandi korral ulatub alamklass üleklassist ja siis toimib sama alaklass teise klassi superklassina. Näiteks,

3. Hierarhiline pärand
Hierarhilises pärimises ulatuvad ühest superklassist mitu alamklassi. Näiteks,

4. Mitu pärandit
Mitme pärandi korral ulatub üks alamklass mitmest superklassist. Näiteks,

Märkus . Java ei toeta mitut pärimist. Liideste abil saame aga saavutada mitmekordse pärimise. Lisateabe saamiseks külastage Java-rakendust.
5. Hübriidne pärand
Hübriidne pärimine on kombinatsioon kahest või enamast pärandiliigist. Näiteks,

Siin oleme hübriidse pärandi moodustamiseks ühendanud hierarhilise ja mitmekordse pärandi.