|
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.
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"
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
}
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,...)
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.
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.
 
|