Šioje pamokoje pavyzdžio pagalba sužinosime apie „Java“ paveldėjimą ir jo tipus.
Paveldėjimas yra viena iš pagrindinių OOP savybių, leidžiančių mums sukurti naują klasę iš esamos klasės.
Sukurta nauja klasė yra vadinama poklasiu (vaikiška arba išvestinė klasė), o esama klasė, iš kurios kilusi vaiko klasė, vadinama superklasė (tėvų arba pagrindinė klasė).
extends
Raktažodis naudojamas atlikti palikimą Java. Pavyzdžiui,
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 )
Ankstesniame pavyzdyje šunų klasė sukurta paveldint metodus ir laukus iš gyvūnų klasės.
Čia šuo yra poklasis, o gyvūnas - superklasė.
1 pavyzdys: „Java“ paveldėjimas
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(); ) )
Rezultatas
Mano vardas Rohu, aš galiu valgyti
Ankstesniame pavyzdyje mes gavome poklasio šunį iš superklasės „Animal“. Atkreipkite dėmesį į teiginius,
labrador.name = "Rohu"; labrador.eat();
Čia labradoras yra Šuns objektas. Tačiau įvardykite ir eat()
būkite gyvūnų klasės nariai.
Kadangi Šuo paveldi lauką ir metodą iš „Animal“, mes galime pasiekti lauką ir metodą naudodami Šuns objektą.

yra-santykiai
Java, paveldėjimo yra yra A santykiai. Tai reiškia, kad paveldėjimą naudojame tik tuo atveju, jei egzistuoja ryšys tarp dviejų klasių. Pavyzdžiui,
- Automobilis yra transporto priemonė
- Apelsinas yra vaisius
- Chirurgas yra gydytojas
- Šuo yra gyvūnas
Čia automobilis gali paveldėti iš transporto priemonės , oranžinis - iš vaisių ir pan.
Metodas, viršijantis „Java“ paveldėjimą
1 pavyzdyje matome, kad poklasio objektas gali pasiekti superklasės metodą.
Tačiau jei tas pats metodas yra ir superklasėje, ir poklasyje, kas nutiks?
Šiuo atveju poklasyje esantis metodas viršija metodą, esantį superklasėje. Ši koncepcija vadinama „Java“ svarbesniu metodu.
2 pavyzdys: „Java“ paveldėjimo svarbesnis metodas
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(); ) )
Rezultatas
Valgau šunų maistą, galiu loti
Ankstesniame pavyzdyje eat()
metodas yra ir superklasės Gyvūnas, ir poklasis Šuo.
Čia mes sukūrėme objektą Šuns labradoras.
Kai mes skambiname eat()
naudodami objektą labradoru, vadinamas „Šuns“ metodas. Taip yra todėl, kad išvestinės klasės metodas pakeičia bazinės klasės metodą.
Tai vadinama metodo viršijimu. Norėdami sužinoti daugiau, apsilankykite „Java Method Overriding“.
Pastaba : @Override
Anotaciją naudojome sakydami kompiliatoriui, kad mes viršijame metodą. Tačiau anotacija nėra privaloma. Norėdami sužinoti daugiau, apsilankykite „Java“ anotacijose.
super raktinis žodis „Java“ paveldėjime
Anksčiau matėme, kad tas pats poklasio metodas viršija metodą superklase.
Esant tokiai situacijai, super
raktinis žodis naudojamas tėvų klasės metodui iškviesti iš vaikų klasės metodo.
3 pavyzdys: paveldimas super raktinis žodis
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(); ) )
Rezultatas
Galiu valgyti, valgau šunų maistą, galiu loti
Ankstesniame pavyzdyje eat()
metodas yra ir pagrindinėje gyvūnų klasėje, ir išvestinėje šunų klasėje. Atkreipkite dėmesį į pareiškimą,
super.eat();
Čia super
raktinis žodis naudojamas vadinti eat()
metodą, esantį superklase.
Mes taip pat galime naudoti super
raktinį žodį, kad iškviestume superklasės konstruktorių iš poklasio konstruktoriaus. Norėdami sužinoti daugiau, apsilankykite „Java super keyword“ .
saugomi paveldėtojo nariai
Jei „Java“ klasėje yra protected
laukai ir metodai, šie laukai ir metodai yra prieinami iš klasės poklasio.
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
Vieno paveldėjimo atveju vienas poklasis tęsiasi iš vienos superklasės. Pavyzdžiui,

2. Daugiapakopis paveldėjimas
Daugiapakopio paveldėjimo atveju poklasis tęsiasi nuo superklasės ir tada tas pats poklasis veikia kaip kitos klasės superklase. Pavyzdžiui,

3. Hierarchinis paveldėjimas
Pagal hierarchinį paveldėjimą iš vienos superklasės tęsiasi keli poklasiai. Pavyzdžiui,

4. Daugkartinis paveldėjimas
Daugkartinio paveldėjimo atveju vienas poklasis tęsiasi iš kelių superklasių. Pavyzdžiui,

Pastaba : „Java“ nepalaiko kelių paveldėjimų. Tačiau naudodami sąsajas galime pasiekti daugelį paveldėjimų. Norėdami sužinoti daugiau, apsilankykite „Java“ įgyvendina kelis paveldėjimo būdus.
5. Hibridinis paveldėjimas
Hibridinis paveldėjimas yra dviejų ar daugiau paveldėjimo rūšių derinys. Pavyzdžiui,

Čia mes sujungėme hierarchinį ir daugkartinį paveldėjimą, kad susidarytume hibridinį paveldėjimą.