Moștenirea Java (cu exemple)

În acest tutorial, vom afla despre moștenirea Java și tipurile sale cu ajutorul exemplului.

Moștenirea este una dintre caracteristicile cheie ale OOP care ne permite să creăm o nouă clasă dintr-o clasă existentă.

Noua clasă care este creată este cunoscută sub numele de subclasă (copil sau clasă derivată), iar clasa existentă de unde este derivată clasa copil este cunoscută sub numele de superclasă (părinte sau clasă de bază).

Cuvântul extendscheie este folosit pentru a efectua moștenirea în Java. De exemplu,

 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 )

În exemplul de mai sus, clasa Dog este creată prin moștenirea metodelor și câmpurilor din clasa Animal.

Aici, Câinele este subclasa și Animalul este superclasa.

Exemplul 1: Moștenirea 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(); ) )

Ieșire

 Numele meu este Rohu, pot mânca

În exemplul de mai sus, am derivat un câine de subclasă din superclasa Animal. Observați declarațiile,

 labrador.name = "Rohu"; labrador.eat();

Aici, labrador este un obiect al lui Dog. Cu toate acestea, numiți și eat()sunteți membrii clasei Animal.

Deoarece câinele moștenește câmpul și metoda de la Animal, putem accesa câmpul și metoda folosind obiectul câinelui.

Implementarea Java Inheritance

este-o relație

În Java, moștenirea este o relație is-a . Adică, folosim moștenirea numai dacă există o relație între două clase. De exemplu,

  • Mașina este un vehicul
  • Portocala este un fruct
  • Chirurgul este doctor
  • Câinele este un animal

Aici, Mașina poate moșteni de la Vehicul , Orange poate moșteni de la Fruct și așa mai departe.

Încetarea metodei în moștenirea Java

În exemplul 1 , vedem că obiectul subclasei poate accesa metoda superclasei.

Cu toate acestea, dacă aceeași metodă este prezentă atât în ​​superclasă, cât și în subclasă, ce se va întâmpla?

În acest caz, metoda din subclasă suprascrie metoda din superclasă. Acest concept este cunoscut sub numele de metodă suprascriere în Java.

Exemplul 2: Metoda suprascriere în Java Moștenire

 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(); ) )

Ieșire

 Mănânc mâncare pentru câini pe care o pot latra

În exemplul de mai sus, eat()metoda este prezentă atât în ​​superclasa Animal, cât și în subclasa Dog.

Aici, am creat un obiect labrador de Dog.

Acum, când apelăm eat()folosind obiectul labrador, se numește metoda din interiorul Dog. Acest lucru se datorează faptului că metoda din clasa derivată suprascrie metoda din clasa de bază.

Aceasta se numește metoda suprascriere. Pentru a afla mai multe, vizitați Java Method Overriding.

Notă : Am folosit @Overrideadnotarea pentru a spune compilatorului că anulăm o metodă. Cu toate acestea, adnotarea nu este obligatorie. Pentru a afla mai multe, vizitați Adnotări Java.

super cuvânt cheie în moștenirea Java

Anterior am văzut că aceeași metodă din subclasă suprascrie metoda din superclasă.

Într-o astfel de situație, supercuvântul cheie este folosit pentru a apela metoda clasei părinte din metoda clasei copil.

Exemplul 3: super cuvânt cheie în moștenire

 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(); ) )

Ieșire

 Pot mânca Mănânc mâncare pentru câini Pot latra 

În exemplul de mai sus, eat()metoda este prezentă atât în ​​clasa de bază Animal, cât și în clasa derivată Dog. Observați declarația,

 super.eat();

Aici, supercuvântul cheie este folosit pentru a apela eat()metoda prezentă în superclasă.

De asemenea, putem folosi supercuvântul cheie pentru a apela constructorul superclasei din constructorul subclasei. Pentru a afla mai multe, vizitați cuvântul cheie super Java .

membri protejați în moștenire

În Java, dacă o clasă include protectedcâmpuri și metode, atunci aceste câmpuri și metode sunt accesibile din subclasa clasei.

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

În moștenirea unică, o singură subclasă se extinde dintr-o singură superclasă. De exemplu,

Java Single Moștenire

2. Moștenirea pe mai multe niveluri

În moștenirea pe mai multe niveluri, o subclasă se extinde dintr-o superclasă și apoi aceeași subclasă acționează ca o superclasă pentru o altă clasă. De exemplu,

Moștenirea Java pe mai multe niveluri

3. Moștenirea ierarhică

În moștenirea ierarhică, subclase multiple se extind dintr-o singură superclasă. De exemplu,

Moștenirea ierarhică Java

4. Moștenirea multiplă

În moștenirea multiplă, o singură subclasă se extinde din mai multe superclase. De exemplu,

Moștenirea multiplă Java

Notă : Java nu acceptă moștenirea multiplă. Cu toate acestea, putem realiza mai multe moșteniri folosind interfețe. Pentru a afla mai multe, vizitați Java implementează moștenirea multiplă.

5. Moștenirea hibridă

Moștenirea hibridă este o combinație de două sau mai multe tipuri de moștenire. De exemplu,

Moștenirea hibridă Java

Aici, am combinat moștenirea ierarhică și multiplă pentru a forma o moștenire hibridă.

Articole interesante...