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.2. Type statique et type dynamique

ICompteur compteur;

Quel est donc le type de la référence compteur ?

Pour répondre à cette question, il convient de distinguer le type statique du type dynamique.

Le type statique est le type déclaré d'une référence, il ne change jamais au cours d'un programme, ici le type statique de compteur est ICompteur. Le type statique est utilisé par le compilateur pour déterminer quelle méthode peut être appelée sur quelle référence.

Le type dynamique est le type effectif de l'objet pointé par une référence, il peut changer au cours d'un programme. Le type dynamique est utilisé à l'exécution pour déterminer le comportement effectif à exécuter. C'est la liaison dynamique.

compteur = new Compteur();

Ici, le type dynamique est Compteur.

compteur.incrementer();

Cette instruction exécute la méthode incrementer() de la classe Compteur.

compteur = new Compteur5Bits();

Après cette nouvelle affectation, le nouveau type dynamique est Compteur5Bits alors que le type statique reste ICompteur.

compteur.incrementer();

Maintenant, la même instruction 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