Qu'est-ce que l'héritage, la superclasse et la sous-classe en Java?

L'héritage est un concept important de la programmation orientée objet. Il fournit un moyen pour objets définir les relations entre eux. Comme son nom l'indique, un objet peut hériter des caractéristiques d'un autre objet.

Plus concrètement, un objet est capable de transmettre son état et ses comportements à ses enfants. Pour que l'héritage fonctionne, les objets doivent avoir des caractéristiques communes entre eux.

Dans Java, les classes peuvent être prises à partir d'autres classes, qui peuvent être prises à partir d'autres, etc. En effet, ils peuvent hériter des fonctionnalités de la classe au-dessus, jusqu'à la classe Object la plus élevée.

Un exemple d'héritage Java

Disons que nous créons une classe appelée Humain qui représente nos caractéristiques physiques. C'est une classe générique qui pourrait vous représenter, moi ou n'importe qui dans le monde. Son état garde une trace de choses comme le nombre de jambes, le nombre de bras et le groupe sanguin. Il a des comportements comme manger, dormir et marcher.

instagram viewer

L'homme est bon pour avoir une idée globale de ce qui nous rend tous pareils, mais il ne peut pas, par exemple, me parler des différences entre les sexes. Pour cela, nous aurions besoin de créer deux nouveaux types de classes appelés Homme et Femme. L'état et les comportements de ces deux classes différeront l'un de l'autre de nombreuses façons, à l'exception de ceux dont ils héritent d'Humain.

Par conséquent, l'héritage nous permet d'englober l'état et les comportements de la classe parent dans son enfant. La classe enfant peut ensuite étendre l'état et les comportements pour refléter les différences qu'elle représente. L'aspect le plus important de ce concept à retenir est que la classe enfant est une version plus spécialisée du parent.

Qu'est-ce qu'une superclasse?

Dans la relation entre deux objets, une superclasse est le nom donné à la classe dont on hérite. Cela ressemble à une classe super duper, mais rappelez-vous que c'est la version la plus générique. Les meilleurs noms à utiliser peuvent être la classe de base ou simplement la classe parent.

Pour prendre un exemple plus réel cette fois, nous pourrions avoir une superclasse appelée Personne. Son état contient le nom, l'adresse, la taille et le poids de la personne et a des comportements tels que faire du shopping, faire le lit et regarder la télévision.

Nous pourrions créer deux nouvelles classes héritant de la personne appelée étudiant et travailleur. Ce sont des versions plus spécialisées, car bien qu'elles aient des noms, des adresses, regardent la télévision et font du shopping, elles ont également des caractéristiques différentes les unes des autres.

Le travailleur pourrait avoir un état qui détient un titre de poste et un lieu de travail tandis que l'étudiant pourrait détenir des données sur un domaine d'études et une institution d'apprentissage.

Exemple de superclasse:

Imaginez que vous définissiez une classe Person:

Personne de classe publique. { }

Une nouvelle classe peut être créée en étendant cette classe:

public class Employee prolonge Person. { }

La classe Person serait la superclasse de la classe Employee.

Qu'est-ce qu'une sous-classe?

Dans la relation entre deux objets, une sous-classe est le nom donné à la classe qui hérite de la superclasse. Bien que cela semble un peu terne, rappelez-vous qu'il s'agit d'une version plus spécialisée de la superclasse.

Dans l'exemple précédent, Student et Worker sont les sous-classes.

Les sous-classes peuvent également être appelées classes dérivées, classes enfants ou classes étendues.

Combien de sous-classes puis-je avoir?

Vous pouvez avoir autant de sous-classes que vous le souhaitez. Il n'y a pas de limite au nombre de sous-classes qu'une superclasse peut avoir. De même, il n'y a pas de limitation sur le nombre de niveaux d'héritage. Une hiérarchie de classes peut être construite sur un certain domaine de similitude.

En fait, si vous regardez les bibliothèques d'API Java, vous verrez de nombreux exemples d'héritage. Chaque classe des API est héritée d'une classe appelée java.lang. Objet. Par exemple, chaque fois que vous utilisez un objet JFrame, vous êtes à la fin d'une longue lignée d'héritage:

 java.lang. Objet. étendu par java.awt. Composant. étendu par java.awt. Récipient. étendu par java.awt. Fenêtre. étendu par java.awt. Cadre. étendu par javax.swing. JFrame. 

En Java, lorsqu'une sous-classe hérite d'une superclasse, elle est connue comme "étendant" la superclasse.

Ma sous-classe peut-elle hériter de nombreuses superclasses?

Non. En Java, une sous-classe ne peut étendre qu'une seule super-classe.

Pourquoi utiliser l'héritage?

L'héritage permet aux programmeurs de réutiliser le code qu'ils ont déjà écrit. Dans l'exemple de classe Humain, nous n'avons pas besoin de créer de nouveaux champs dans la classe Homme et Femme pour contenir le groupe sanguin car nous pouvons utiliser celui hérité de la classe Humain.

Un autre avantage de l'utilisation de l'héritage est qu'il nous permet de traiter une sous-classe comme s'il s'agissait d'une superclasse. Par exemple, supposons qu'un programme a créé plusieurs instances des objets Homme et Femme. Le programme peut avoir besoin d'appeler le comportement de sommeil pour tous ces objets. Parce que le comportement de sommeil est un comportement de la superclasse humaine, nous pouvons regrouper tous les objets homme et femme et les traiter comme s'ils étaient des objets humains.

instagram story viewer