Î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 extends
cheie 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.

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 @Override
adnotarea 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, super
cuvâ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, super
cuvântul cheie este folosit pentru a apela eat()
metoda prezentă în superclasă.
De asemenea, putem folosi super
cuvâ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 protected
câ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,

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,

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

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

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,

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