U ovom uputstvu naučit ćemo o nasljeđivanju Java i njezinim vrstama uz pomoć primjera.
Nasljeđivanje je jedna od ključnih značajki OOP-a koja nam omogućuje stvaranje nove klase od postojeće klase.
Nova klasa koja je stvorena poznata je kao podklasa (podređena ili izvedena klasa), a postojeća klasa odakle je podređena klasa poznata kao superklasa (roditeljska ili osnovna klasa).
extends
Ključna riječ se koristi za obavljanje baštinu u Java. Na primjer,
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 )
U gornjem primjeru, klasa Dog kreira se nasljeđivanjem metoda i polja iz klase Animal.
Ovdje je pas podrazred, a životinja podrazred.
Primjer 1: Nasljeđivanje Java
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(); ) )
Izlaz
Zovem se Rohu, mogu jesti
U gornjem primjeru izveli smo potklasu Pas iz superklase Životinja. Primijetite izjave,
labrador.name = "Rohu"; labrador.eat();
Ovdje je labrador pasji objekt. Međutim, imenovati i eat()
članovi su klase Životinje.
Budući da Pas nasljeđuje polje i metodu od Animal, mogli smo pristupiti polju i metodi pomoću objekta Pas.

je-odnos
U Javi je nasljeđivanje odnos is-a- odnosa. Odnosno, nasljedstvo koristimo samo ako postoji odnos između dvije klase. Na primjer,
- Auto je vozilo
- Naranča je voće
- Kirurg je liječnik
- Pas je životinja
Ovdje Car može naslijediti od Vehicle , Orange može naslijediti od Voća , i tako dalje.
Nadjačavanje metode u nasljeđivanju Java
U primjeru 1 vidimo da objekt potklase može pristupiti metodi superklase.
Međutim, ako je ista metoda prisutna i u superrazredu i u podrazredu, što će se dogoditi?
U ovom slučaju, metoda u podrazredu nadjačava metodu u nadrazredu. Ovaj je koncept poznat kao nadjačavanje metoda u Javi.
Primjer 2: Nadjačavanje metode u nasljeđivanju Java
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(); ) )
Izlaz
Jedem pseću hranu koju mogu lajati
U gornjem primjeru eat()
metoda je prisutna i u superklasi Životinja i u podrazredu Pas.
Ovdje smo stvorili objektni pasji labrador.
Sada kada zovemo eat()
pomoću objekta labrador, poziva se metoda unutar Dog. To je zato što metoda unutar izvedene klase nadjačava metodu unutar osnovne klase.
To se naziva nadjačavanje metode. Da biste saznali više, posjetite Java Nadjačavanje metode.
Napomena : Bilješku smo upotrijebili @Override
kako bismo kompajleru rekli da nadjačavamo metodu. Međutim, bilješka nije obavezna. Da biste saznali više, posjetite Java Annotations.
super ključna riječ u nasljeđivanju Java
Prije smo vidjeli da ista metoda u podrazredu nadjačava metodu u superklasi.
U takvoj se situaciji super
ključna riječ koristi za pozivanje metode roditeljske klase iz metode podređene klase.
Primjer 3: super ključna riječ u nasljeđivanju
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(); ) )
Izlaz
Mogu jesti Jedem pseću hranu Mogu lajati
U gornjem primjeru eat()
metoda je prisutna i u osnovnoj klasi Animal i u izvedenoj klasi Dog. Primijetite izjavu,
super.eat();
Ovdje se super
ključna riječ koristi za pozivanje eat()
metode prisutne u superklasi.
Također možemo upotrijebiti super
ključnu riječ za pozivanje konstruktora superklase iz konstruktora potklase. Da biste saznali više, posjetite Java ključnu riječ super .
zaštićeni članovi u nasljeđivanju
U Javi, ako klasa uključuje protected
polja i metode, tada su tim poljima i metodama dostupni iz podklase klase.
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
U pojedinačnom nasljeđivanju, jedan se podrazred proteže od jednog superrazreda. Na primjer,

2. Višerazinsko nasljeđivanje
U višerazinskom nasljeđivanju, podrazred se proteže od superrazreda i tada isti podrazred djeluje kao superrazred za drugu klasu. Na primjer,

3. Hijerarhijsko nasljeđivanje
U hijerarhijskom nasljeđivanju, više se podrazreda proteže iz jedne superklase. Na primjer,

4. Višestruko nasljeđivanje
U višestrukom nasljeđivanju, jedan se podrazred proteže od više superklasa. Na primjer,

Napomena : Java ne podržava višestruko nasljeđivanje. Međutim, možemo postići višestruko nasljeđivanje pomoću sučelja. Da biste saznali više, posjetite Java implementira višestruko nasljeđivanje.
5. Hibridno nasljeđivanje
Hibridno nasljeđivanje kombinacija je dviju ili više vrsta nasljeđivanja. Na primjer,

Ovdje smo kombinirali hijerarhijsko i višestruko nasljeđivanje da bismo stvorili hibridno nasljeđe.