Java - L'héritage

Décembre 2016

La notion d'héritage

Le concept d'héritage est un des concepts les plus importants de la programmation orientée objet, car il conditionne irréversiblement la façon selon laquelle un code Java est écrit. L'héritage est un mécanisme permettant de créer une nouvelle classe à partir d'une classe existante en lui proférant ses propriétés et ses méthodes.

Ainsi, pour définir une nouvelle classe, il suffit de la faire hériter d'une classe existante et de lui ajouter de nouvelles propriétés/méthodes.

De cette façon, les classes héritées forment une hiérarchie descendante, au sommet de laquelle se situe la classe de base (superclasse). On appelle également la classe héritée la sous-classe et la classe parente la super-classe.

arborescence des classe

Avec Java, l'arborescence est stricte, c'est-à-dire qu'une classe donnée ne peut possèder qu'une seule superclasse (l'héritage est dit simple contrairement à des langages comme le C++, pour lesquels un héritage dit multiple est possible). Par contre, une classe peut possèder un nombre illimité de sous-classes.

Lors de l'instanciation d'une classe, celle-ci hérite de (cela signifie qu'elle reçoit) l'ensemble des propriétés et des méthodes de sa superclasse, qui elle-même hérite d'une éventuelle superclasse, etc.
Par conséquent le travail principal du programmeur Java consiste à concevoir une hiérarchie de classe, c'est-à-dire organiser les classes de telles façon que les propriétés et méthodes communes à plusieurs classes soient placées dans une superclasse.

Grâce à ce système organisationnel, il est aisé de réutiliser des composants existants et de leur ajouter un comportement. De plus, la modification de la superclasse implique la modification automatique de toutes les sous-classes. Pour plus d'informations sur l'héritage, consulter la section "programmation orientée objet"

L'héritage avec Java

Une classe se définit tout simplement grâce au mot-clé class de la manière suivante par exemple :

class Ccm {
	// Corps de la classe 
}
Par défaut une classe hérite de la "super-superclasse" nommée Object. Pour faire hériter une classe d'une superclasse, Java fournit le mot-clé extends, c'est-à-dire que les quelques lignes de code ci-dessus sont équivalentes à:

class Ccm extends Object {
	// Corps de la classe 
}

Le mot-clé super

Au même titre que le mot-clé this permet de faire référence à l'objet en cours, le mot-clé super permet de désigner la superclasse, c'est-à-dire qu'à l'aide du mot-clé super, il est possible de manipuler les données membres et les méthodes de la superclasse.

Pour manipuler une proriété de la superclasse, il suffit d'utiliser la syntaxe suivante :

super.nom_de_la_propriete

De la même façon, pour manipuler une méthode de la superclasse, il suffit d'utiliser la syntaxe suivante :

super.nom_de_la_methode()

Enfin, il est possible de faire appel au constructeur de la classe parente en fournissant des arguments au mot-clé super de la façon suivante :

super(parametre1,parametre2,...)

Remplacer une méthode existante de la superclasse

Lorsqu'une classe hérite de sa superclasse, elle hérite de ses méthodes, c'est-à-dire qu'elle possède les mêmes méthodes que sa superclasse.

Il est possible de redéfinir totalement une méthode en la redéfinissant (mêmes nombres et types d'arguments que la méthode de la superclasse). De cette façon, la méthode originale est ignorée au profit de sa redéfinition.

Ajouter un comportement à une méthode de la superclasse

La redéfinition d'une méthode consiste à réécrire totalement la méthode initiale. Il est parfois utile de simplement ajouter un comportement au comportement original, pour cela l'utilisation du mot-clé super s'avère nécessaire. En appelant le constructeur de la superclasse dans le corps de la méthode qui la redéfinit, et en ajoutant de nouvelles instructions, la méthode originale est dotée de comportements supplémentaires.


A voir également :

Ce document intitulé «  Java - L'héritage  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.