IFT 1170, automne 2006
Chapitre 8 : Héritage simple et polymorphisme
Java permet d'implémenter facilement l'héritage simple.
Ce type d'héritage est fréquent dans les classes prédéfinies de Java:
La seule super classe de Stack est Vector.
La seule super classe de Vector est Object.
Notez qu’une super-classe (exemple Number dans java.lang) peut disposer
de plusieurs sous-classes : Integer, Double, Float, Long.
Héritage multiple:
une classe peut hériter de plus d'une super-classe
Ce concept est permis en C++ mais non en Java. Java utilise la notion de l'interface
(matière vers la fin de session) pour contourner ce problème.
Surdéfinir (surcharger, overloading)
La surdéfinition permet au programmeur de déclarer plusieurs méthodes ou constructeurs
ayant le même nom, mais ayant des paramètres différents ou du genre différent (avec
return, de type void).
On a déjà vu fréquemment des constructeurs sans paramètres, constructeurs avec
paramètres qui portent le même nom (de la classe) :
public Rectangle() { } // constructeur d'un rectangle
public Rectangle(int lo, int la) {. . . } // constructeur avec paramètres
La méthode afficher est aussi fréquemment surdéfinie dans les projets:
public void afficher(int nombre, int nbCol) // afficher un nombre avec tant de colonnes
public void afficher(String nom) // afficher un objet en connaissant son nom
public void afficher(Vector v, String message) // afficher le contenu d'un vecteur …
Redéfinir (overriding):
Avec l'héritage, il est utile, dépendant des besoins, de redéfinir des méthodes existantes
d'une super-classe. C'est le cas des deux méthodes toString() et equals qui sont souvent
redéfinies dans la plupart des sous-classes d'Object .
La méthode toString() est redéfinie dans String, Integer. Par cette raison, l'affichage
suivant fonctionne parfaitement :
String souhait = "Bonne chance!" ;
Vector<Integer> v = new Vector<Integer> ();
v.addElement ( new Integer (23) );
v. addElement ( new Integer (15);