Explorer l'héritage dans le langage de programmation Java

L'héritage est l'un des concepts fondamentaux de la programmation orientée objet. En programmation, le mot héritage représente une relation dans laquelle une classe enfant assume l'état et le comportement d'une classe parent.

Le but de l'héritage dans le développement de logiciels est de faciliter la réutilisation de logiciels sûrs et fiables. L'un des principaux avantages de l'utilisation de l'héritage est qu'il élimine le code redondant dans vos programmes.

Comment fonctionne l'héritage

L'idée derrière l'héritage est que de nombreuses classes ou objets ont une partie du même ensemble d'attributs et de méthodes. Par conséquent, dans l'esprit de produire des logiciels fiables, de nouvelles classes peuvent désormais s'appuyer sur des classes apparentées préexistantes et, si nécessaire, développer des états et des comportements existants.

Un exemple concret du fonctionnement de l'héritage serait de considérer les fruits. Il s'agit d'une étiquette large qui sert à encapsuler une gamme d'articles différents.

Une pomme est un fruit et une orange aussi. Cependant, une orange n'est pas une pomme, vous n'auriez donc pas de fruits parmi vos articles en stock si vous possédiez un magasin. Vous pourriez peut-être avoir une section de fruits dans votre inventaire, et sous cette section, vous auriez des articles plus spécifiques comme des pommes et des oranges.

C'est ainsi que fonctionne l'héritage.

Utilisation de l'héritage en Java

L'héritage peut être utilisé dans n'importe quel langage de programmation qui utilise le paradigme de la programmation orientée objet. Cependant, la manière exacte dont l'héritage est utilisé dépend du langage de programmation spécifique.

Par exemple, C++ est également un langage de programmation orienté objet. C++ prend en charge ce que l'on appelle l'héritage multiple, tandis que Java ne prend en charge que l'héritage unique.

Voir aussi :  Comment configurer votre propre site Web en 2 heures ou moins

Cela signifie qu'en Java, une classe parent peut avoir plusieurs classes enfants, mais chaque classe enfant ne peut avoir qu'une seule classe parent (héritage unique). Cependant, il existe un moyen d'obtenir un héritage multiple indirect en Java, en créant une relation grand-parent, parent et enfant.

Création de la classe parent en Java

Le processus de sélection d'une classe parente à partir d'un document d'exigences logicielles est appelé analyse orientée objet. Au cours de ce processus, l'expression "est un" est souvent utilisée pour identifier les relations d'héritage possibles. En vous inspirant de notre exemple ci-dessus, vous devriez pouvoir voir que fruit serait notre classe parente.

Exemple de classe parent Fruit

L'un des aspects les plus notables de la classe parent ci-dessus est le modificateur d'accès utilisé avec chaque déclaration de variable. Le modificateur d'accès « protégé » est idéal pour une utilisation dans les classes parentes car il empêche les classes non enfants d'accéder aux attributs de données de la classe parente.

Plus bas dans le code, vous découvrirez les constructeurs, les getters et les setters qui sont des blocs de construction généraux pour toute classe Java. Enfin, vous êtes initié à deux méthodes (jus et manger) qui sont créées dans la classe mère de notre programme parce qu'elles sont universelles pour tous les fruits - tous les fruits peuvent être mangés et pressés.

Création de classes enfants en Java

Les classes enfants sont généralement appelées classes spécialisées ou dérivées car elles héritent de l'état et du comportement d'un parent et personnalisent souvent ces attributs pour qu'ils soient plus spécifiques.

Voir aussi :  Aide-mémoire sur les raccourcis clavier GitHub pour Windows et Mac

En continuant avec notre exemple, vous devriez être en mesure de voir pourquoi l'orange serait une classe enfant appropriée de la classe des fruits ci-dessus.

Exemple de classe enfant orange

Il y a une différence entre ce à quoi ressemble une déclaration de classe Java normale et ce que nous avons dans notre code ci-dessus. Le mot-clé "extends" est ce qui est utilisé en Java pour rendre l'héritage possible.

Dans notre exemple ci-dessus, la classe enfant (orange) étend la classe parent (fruit). Par conséquent, l'état et le comportement de la classe fruit peuvent désormais être consultés et modifiés par la classe orange.

L'attribut unique que possède notre classe orange est identifié avec le nom variable suprêmes (qui est le nom officiel des petits segments trouvés dans les oranges). C'est là que la spécialisation entre en jeu; tous les fruits n'ont pas de suprêmes mais toutes les oranges en ont, il est donc logique de réserver la variable des suprêmes à la classe orange.

L'ajout de la méthode « peler » aux méthodes préexistantes « manger » et « jus » est également logique, car même si tous les fruits ne peuvent pas être pelés, les oranges le sont souvent.

Vous devez garder à l'esprit que si nous n'avions pas l'intention de modifier les méthodes existantes «manger» et «jus», nous n'aurions pas besoin de les inclure dans notre classe orange. Les méthodes de la classe orange remplacent toute méthode similaire de la classe fruit. Donc, si tous les fruits étaient consommés et pressés de la même manière, nous n'aurions pas besoin de créer ces méthodes dans la classe orange.

Voir aussi :  Documenter les API de NestJS avec Swagger

Le rôle que jouent les constructeurs dans l'héritage

Par défaut, les constructeurs de classes parents sont hérités par les classes enfants. Par conséquent, si un objet de classe enfant est créé, cela signifie qu'un objet de classe parent est également créé automatiquement.

Pour en revenir à notre exemple, chaque fois qu'un nouvel objet orange est créé, un objet fruit est également créé car une orange est un fruit.

Dans les coulisses, lorsqu'un objet de classe enfant est créé, le constructeur de la classe parent est appelé en premier, suivi du constructeur de la classe enfant. Dans notre classe enfant orange ci-dessus, si un objet orange est créé sans aucun paramètre, notre constructeur de classe fruit par défaut sera appelé, suivi de notre entrepreneur de classe orange par défaut.

La méthode "super" dans notre constructeur principal ci-dessus est nécessaire car elle spécifie que le constructeur principal - et non le constructeur par défaut - de la classe fruit parent doit être appelé chaque fois qu'un objet orange avec des paramètres est créé.

Vous pouvez maintenant utiliser l'héritage en Java

À partir de cet article, vous avez pu apprendre ce qu'est l'héritage, comment il fonctionne et pourquoi il s'agit d'un concept si important en programmation. Vous pouvez désormais créer vos relations d'héritage à l'aide du langage de programmation Java. De plus, vous savez maintenant comment contourner la règle d'héritage unique de Java en créant une relation grand-parent.

Crédit image : Andreas Wohlfahrt/Pexels

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.