La communauté ALL HTML c'est 58254 membres à ce jour dont 0 inscrits aujourd'hui et 31 depuis une semaine.

L'héritage en JAVA

Photo de ALL HTML Article publié le lundi 29 mars 2004 par ALL HTML.
Cet article est classé dans les catégories « JAVA »

Déclaration d'un héritage


En JAVA un classe mère est dite super-classe et une classe fille sous-classe .
Pour signifier qu'une classe hérite d'une autre classe, on introduit le mot clef extends lors de sa déclaration :

class Humain extends Omnivore {...}

Note : Toute classe hérite de la classe Object . Etant donné que c'est un héritage par défaut automatique, il n'est pas besoin de le préciser.

Utilisation des propriétés et méthodes


Pour accéder aux propriétés ou méthodes de la super-classe, cela se fait comme pour l'accès aux propriétés et méthodes propres mais avec le mot clef super .
Ainsi, on écrira :

super.nom_de_methode() ;

Pour faire appel au constructeur on pourra, au lieu de l'appeler par son nom, l'appeler par ce même mot-clef de cette manière :

super(parametre 1 , parametre2 , ...) ;

Modification d'une méthode héritée


Si une méthode ne doit pas s'excéuter exactement de la même manière que dans la classe mère, on peut la redéfinir tout simplement en lui donnant exactement le même nom et les mêmes paramètres.
Ce peut être le cas, par exemple, pour la méthode manger(). Elle sera définie pour la classe Animal car tous les animaux mangent mais chacun a sa propre manière de se nourrir.
On pourra avoir dans Animal :

void manger () { this.mordre() ; this.macher() ; this.avaler() ; }

On aura ensuite la conserver telle quelle sauf pour les Herbivore . On n'écrira rien dans toutes les sous-classes sauf dans Herbivore où l'on mettra :

void manger () { this.brouter () ; }

Ainsi, lorsqu'on dira à un Herbivore où à une Vache de manger ils brouteront...

Modification de toutes les méthodes héritées


Il peut arriver de vouloir faire hériter une classe d'une autre mais en voulant modifier l'exécution de toutes ses méthodes.
Dans ce cas il faut modifier la déclaration de la sous-classe. Elle n'étend plus sa classe mère ( extends ), on dit qu'elle l' implémente . La déclaration se fait alors par le mot-clef implents :

class Vache implements Herbivore {...}

Note : A manier avec précaution : même si vous ne redéfinissez pas une méthode il faut la déclarer, faites donc attention à bien déclarer TOUTES les méthodes de la super-classe.

Supposons que nous voulions ici modifier toutes les méthodes de Herbivore mais conserver manger(). Nous écrirons alors :

class Vache implements Herbivore { void seDeplacer() { // corps de la méthode } void manger() { } etc. }

VOS COMMENTAIRES ...

Commenter cette publication

Photo de Blaise Commentaire publié le jeudi 27 avril 2006 à 15 h 12 par Blaise
Pour accéder à un attribut ou méthode d'un classe parente il n'est pas nécessaure d'utiliser super tant que ceux ci ne sont pas surchargés dans la classe fille
Photo de DrHelmut Commentaire publié le lundi 04 septembre 2006 à 22 h 49 par DrHelmut
En fait le mot-clé "implements" veut dire que la classe implémente une classe abstraite. L'utilisation que tu en fais est... bizarre, ce n'est pas du tout le but surtout que rien n'empêche de réécrire TOUTES les méthodes d'une classe mère dans une classe qui extends une autre. (c'est la surcharge de méthode)

Bref, "implements" c'est une notion un peu compliquée : un objet qui implémente une Interface (classe ne contenant que des méthodes vides) DOIT comme tu l'as dit implémenter toutes les méthodes (les réécrire) et ce comme bon lui semble.
Cela permet de donner à des objets des propriétés communes sans avoir besoin de recourir à l'héritage;

De plus, même si une classe ne peut hériter que d'une seule classe, elle peut en implémenter autant qu'elle le veut.

"public class maClasse extends parent implements interface1, interface2, interface3,... "

Pour l'utilité pratique, voyez notament les "Listeners" lors de la création d'interface graphiques en Java (librairie Swing)

Commenter cette publication

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

Forums de discussions associés

Discutez et échangez sur ce thème dans notre forum Autres langages (JAVA, JSP, etc.).

Liens sponsorisés

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.