Héritage Java (avec exemples)

Dans ce didacticiel, nous allons en apprendre davantage sur l'héritage Java et ses types à l'aide d'exemples.

L'héritage est l'une des fonctionnalités clés de la POO qui nous permet de créer une nouvelle classe à partir d'une classe existante.

La nouvelle classe créée est appelée sous- classe ( classe enfant ou dérivée) et la classe existante d'où la classe enfant est dérivée est appelée superclasse ( classe parent ou de base).

Le extendsmot-clé est utilisé pour effectuer l'héritage en Java. Par exemple,

 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 )

Dans l'exemple ci-dessus, la classe Dog est créée en héritant des méthodes et des champs de la classe Animal.

Ici, Dog est la sous-classe et Animal est la superclasse.

Exemple 1: héritage 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(); ) )

Production

 Mon nom est Rohu, je peux manger

Dans l'exemple ci-dessus, nous avons dérivé une sous-classe Dog de la superclasse Animal. Notez les déclarations,

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

Ici, le labrador est un objet de Dog. Cependant, nom et eat()sont les membres de la classe Animal.

Puisque Dog hérite du champ et de la méthode d'Animal, nous pouvons accéder au champ et à la méthode en utilisant l'objet du Chien.

Implémentation de l'héritage Java

est-une relation

En Java, l'héritage est une relation is-a . Autrement dit, nous n'utilisons l'héritage que s'il existe une relation is-a entre deux classes. Par exemple,

  • La voiture est un véhicule
  • Orange est un fruit
  • Le chirurgien est un médecin
  • Le chien est un animal

Ici, la voiture peut hériter du véhicule , Orange peut hériter du fruit , et ainsi de suite.

Remplacement de méthode dans l'héritage Java

Dans l' exemple 1 , nous voyons que l'objet de la sous-classe peut accéder à la méthode de la superclasse.

Cependant, si la même méthode est présente à la fois dans la superclasse et la sous-classe, que se passera-t-il?

Dans ce cas, la méthode de la sous-classe remplace la méthode de la superclasse. Ce concept est connu sous le nom de remplacement de méthode en Java.

Exemple 2: remplacement de méthode dans l'héritage 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(); ) )

Production

 Je mange de la nourriture pour chien, je peux aboyer

Dans l'exemple ci-dessus, la eat()méthode est présente à la fois dans la superclasse Animal et dans la sous-classe Dog.

Ici, nous avons créé un objet labrador de Chien.

Maintenant, lorsque nous appelons en eat()utilisant l'objet labrador, la méthode à l'intérieur de Dog est appelée. Cela est dû au fait que la méthode à l'intérieur de la classe dérivée remplace la méthode à l'intérieur de la classe de base.

C'est ce qu'on appelle le remplacement de méthode. Pour en savoir plus, consultez Remplacement de méthode Java.

Remarque : Nous avons utilisé l' @Overrideannotation pour indiquer au compilateur que nous remplaçons une méthode. Cependant, l'annotation n'est pas obligatoire. Pour en savoir plus, visitez Annotations Java.

super mot-clé dans l'héritage Java

Auparavant, nous avons vu que la même méthode dans la sous-classe remplace la méthode dans la superclasse.

Dans une telle situation, le supermot clé est utilisé pour appeler la méthode de la classe parent à partir de la méthode de la classe enfant.

Exemple 3: super mot-clé dans l'héritage

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

Production

 Je peux manger, je mange de la nourriture pour chien, je peux aboyer 

Dans l'exemple ci-dessus, la eat()méthode est présente à la fois dans la classe de base Animal et dans la classe dérivée Dog. Notez la déclaration,

 super.eat();

Ici, le supermot-clé est utilisé pour appeler la eat()méthode présente dans la superclasse.

On peut également utiliser le supermot - clé pour appeler le constructeur de la superclasse depuis le constructeur de la sous-classe. Pour en savoir plus, visitez le super mot-clé Java .

membres protégés en héritage

En Java, si une classe comprend des protectedchamps et des méthodes, ces champs et méthodes sont accessibles à partir de la sous-classe de la classe.

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

Dans l'héritage simple, une seule sous-classe s'étend à partir d'une seule superclasse. Par exemple,

Héritage unique Java

2. Héritage à plusieurs niveaux

Dans l'héritage multiniveau, une sous-classe s'étend à partir d'une superclasse, puis la même sous-classe agit comme une superclasse pour une autre classe. Par exemple,

Héritage à plusieurs niveaux Java

3. Héritage hiérarchique

Dans l'héritage hiérarchique, plusieurs sous-classes s'étendent à partir d'une seule superclasse. Par exemple,

Héritage hiérarchique Java

4. Héritage multiple

Dans l'héritage multiple, une seule sous-classe s'étend à partir de plusieurs superclasses. Par exemple,

Héritage multiple Java

Remarque : Java ne prend pas en charge l'héritage multiple. Cependant, nous pouvons réaliser plusieurs héritages à l'aide d'interfaces. Pour en savoir plus, visitez Java implémente l'héritage multiple.

5. Héritage hybride

L'héritage hybride est une combinaison de deux ou plusieurs types d'héritage. Par exemple,

Héritage hybride Java

Ici, nous avons combiné l'héritage hiérarchique et multiple pour former un héritage hybride.

Articles intéressants...