Héritage en Java (avec exemple)

Qu'est-ce que l'héritage ?

Droit des successions est un mécanisme dans lequel une classe acquiert la propriété d’une autre classe. Par exemple, un enfant hérite des traits de ses parents. Avec l'héritage, nous pouvons réutiliser les champs et les méthodes de la classe existante. Par conséquent, l’héritage facilite la réutilisabilité et constitue un concept important des POO.

Qu'est-ce que l'héritage en Java?

Java Droit des successions est un mécanisme dans lequel une classe acquiert la propriété d’une autre classe. Dans Java, lorsqu'une relation « Est-A » existe entre deux classes, nous utilisons l'héritage. La classe parent est appelée une super classe et la classe héritée est appelée une sous-classe. Le mot clé extends est utilisé par la sous-classe pour hériter des fonctionnalités de la super-classe. L'héritage est important car il conduit à la réutilisabilité du code.

Java Syntaxe d'héritage :

class subClass extends superClass  
{  
   //methods and fields  
} 

Types d'héritage en Java

Voici les différents types d'héritage en Java:

  1. Héritage unique
  2. Héritage multiple
  3. Héritage à plusieurs niveaux
  4. Héritage hiérarchique
  5. Héritage hybride

1. Héritage unique :

Dans l'héritage unique, une classe étend une autre classe (une seule classe).

Héritage unique en Java
Héritage unique

Dans le diagramme ci-dessus, la classe B étend uniquement la classe A. La classe A est une super classe et la classe B est une sous-classe.

2. Héritage multiple :

L'héritage multiple est l'un des héritages dans Java types où une classe s’étendant sur plus d’une classe. Java ne prend pas en charge l'héritage multiple.

Héritage multiple dans Java
Java Héritage multiple

Selon le diagramme ci-dessus, la classe C étend la classe A et la classe B.

3. Héritage à plusieurs niveaux :

Dans l'héritage multiniveau, une classe peut hériter d'une classe dérivée. La classe dérivée devient donc la classe de base de la nouvelle classe.

Héritage multiniveau dans Java
Héritage à plusieurs niveaux

Comme le montre le diagramme, la classe C est une sous-classe de B et B est une sous-classe de classe A.

4. Héritage hiérarchique :

Dans l'héritage hiérarchique, une classe est héritée par plusieurs sous-classes.


Héritage hiérarchique dans Java
Héritage hiérarchique

Selon l'exemple ci-dessus, les classes B, C et D héritent de la même classe A.

5. Héritage hybride :

L'héritage hybride est l'un des types d'héritage dans Java qui est une combinaison d’héritage simple et multiple.


Héritage hybride
Héritage hybride

Comme dans l'exemple ci-dessus, tous les membres publics et protégés de la classe A sont hérités de la classe D, d'abord via la classe B et ensuite via la classe C.

Remarque: Java ne prend pas en charge l'héritage hybride/multiple

Héritage en Java Exemple

Voici un exemple d'héritage dans Java:


Exemple de Java Droit des successions
Java Exemple d'héritage

class Doctor {
 void Doctor_Details() {
  System.out.println("Doctor Details...");
 }
}

class Surgeon extends Doctor {
 void Surgeon_Details() {
  System.out.println("Surgen Detail...");
 }
}

public class Hospital {
 public static void main(String args[]) {
  Surgeon s = new Surgeon();
  s.Doctor_Details();
  s.Surgeon_Details();
 }
}

Super mot-clé

Le mot-clé super est similaire au mot-clé « this ». Le mot-clé super peut être utilisé pour accéder à n’importe quel membre de données ou à n’importe quelle méthode de la classe parent. Le mot-clé super peut être utilisé à variable, méthode et niveau constructeur.

syntaxe:

super.<method-name>();

Vérifiez également: - ce mot-clé dans Java: Qu'est-ce que c'est et comment l'utiliser avec l'exemple

Apprenez l'héritage dans la POO avec un exemple

Considérons la même application bancaire du exemple précédent.

Nous sommes censés ouvrir deux types de comptes différents, un pour épargner et un autre pour vérifier (également appelé courant).

Héritage en POO

Comparons et étudions comment nous pouvons aborder le codage à partir d'un perspective de programmation structurée et orientée objet.

Approche structurelle: En programmation structurée, nous allons créer deux fonctions –

  1. Un à retirer
  2. Et l'autre pour l'action de dépôt.

Puisque le fonctionnement de ces fonctions reste le même dans tous les comptes.

Héritage dans les POO

L'approche de la POO: Lors de l'utilisation du Oops approche de programmation. Nous créerions deux classes.

  • Chacun ayant la mise en œuvre des fonctions de dépôt et de retrait.
  • Cela entraînera un travail supplémentaire redondant.

Héritage dans les POO

Demande de modification dans le logiciel

Il y a maintenant un changement dans la spécification des exigences pour quelque chose qui est si courant dans l’industrie du logiciel. Vous êtes censé ajouter une fonctionnalité de compte bancaire privilégié avec facilité de découvert. Pour mémoire, le découvert est une possibilité qui vous permet de retirer un montant supérieur au solde disponible de votre compte.

Demande de modification dans le logiciel

Approche structurelle : En utilisant une approche fonctionnelle, je dois modifier ma fonction de retrait, qui est déjà testée et référencée. Et ajouter une méthode comme ci-dessous prendra en charge les nouvelles exigences.

Demande de modification dans le logiciel

L'approche de la POO : En utilisant l'approche POO, il vous suffit d'écrire une nouvelle classe avec une implémentation unique de la fonction de retrait. Nous n'avons jamais touché au morceau de code testé.

Demande de modification dans le logiciel

Une autre demande de changement

Et si les exigences changeaient encore ? J'aime ajouter un compte de carte de crédit avec ses propres exigences de dépôt.

Demande de changement multiple dans les exigences logicielles

Approche structurelle : En utilisant une approche structurelle, vous devez à nouveau modifier la partie testée du code de dépôt.

Approche structurelle des demandes de changement multiples dans les logiciels

L'approche de la POO:Mais en utilisant une approche orientée objet, vous allez simplement créer une nouvelle classe avec son implémentation unique de la méthode de dépôt (surlignée en rouge dans l'image ci-dessous). Ainsi, même si la programmation structurelle semble être une approche facile au départ, la programmation orientée objet l'emporte à long terme.

L'approche de la POO face aux demandes de changement multiples

Avantages de l'héritage dans les POO

Mais on peut affirmer que dans toutes les classes, vous disposez de morceaux de code répétés.

Pour surmonter cela, vous créez une classe parent, disons « compte » et implémentez la même fonction de dépôt et de retrait. Et faites en sorte que les classes enfants héritent de la classe « compte ». Ainsi, elles auront accès aux fonctions de retrait et de dépôt dans la classe compte. Les fonctions ne doivent pas nécessairement être implémentées individuellement. Héritage en Java. .

Avantages de l'héritage dans les POO

Avantages de l'héritage dans les POO