Nasljeđivanje Java (s primjerima)

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

extendsKljuč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.

Implementacija nasljeđivanja Java

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 @Overridekako 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 superključ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 superključna riječ koristi za pozivanje eat()metode prisutne u superklasi.

Također možemo upotrijebiti superključ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 protectedpolja 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,

Jedno nasljeđivanje Java

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,

Java višerazinsko nasljeđivanje

3. Hijerarhijsko nasljeđivanje

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

Java hijerarhijsko nasljeđivanje

4. Višestruko nasljeđivanje

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

Java višestruko nasljeđivanje

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,

Java hibridno nasljeđivanje

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

Zanimljivi članci...