Java pour l'informatique industrielle
Chapitre 1. Introduction aux objets
Chapitre 2. Les structures de contrôle
Chapitre 3. Unifier et réutiliser
3.1. Motivation
3.2. Exploiter l'orthogonalité
3.3. Les interfaces
3.4. Le polymorphisme
3.4.1. Références polymorphiques
3.4.2. Type statique et type dynamique
3.4.3. En résumé
3.5. L'héritage
3.6. Les collections
3.7. Objets et HDL
Chapitre 4. Modèle, Vue et Contrôle
Chapitre 5. Les entrées/sorties
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

3.4.3. En résumé

ICompteur compteur;

ICompteur est le type statique de compteur.

L'instruction compteur.incrementer(); compile car le type statique de compteur déclare une méthode incrementer().

L'instruction compteur.etat; ne compile pas car le type statique de compteur ne déclare de champs etat.

Les problèmes de compilation concernent uniquement le type statique des références.

Si la référence ne pointe sur aucun objet, elle pointe sur null. Pointer sur null, n'empêche en aucune façon le code de compiler. A l'exécution, cependant, on obtient une exception de type NullPointerException.

compteur = new Compteur();

Le type dynamique est désormais Compteur. L'instruction compteur.incrementer(); concerne donc la classe Compteur.

compteur = new Compteur5Bits();

Après cette nouvelle affectation, le nouveau type dynamique est Compteur5Bits.

Maintenant, l'instruction compteur.incrementer(); exécute la méthode incrementer() de la classe Compteur5Bits.

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante