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.5. L'héritage
3.6. Les collections
3.6.1. La classe java.util.ArrayList
3.6.2. Utilisation
3.6.3. Transtypage
3.6.4. Exercice
3.6.5. Les collections génériques
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.6.4. Exercice

Il est conseillé d'étudier de près les exemples donnés ci-dessous pour déterminer quelles instructions sont valides ou pas. Pour les instructions invalides, déterminer si l'erreur est détectée à la compilation ou constatée à l'exécution. Le code ci-dessous n'a aucun sens précis, son seul but est d'illustrer les différents cas qui peuvent se présenter.

1. Compteur c1 = new Compteur(); 2. c1 = new CompteurModulo(5); 3. CompteurModulo cm = (CompteurModulo)c1; 4. Object c = c1; 5. Compteur c2 = (Compteur)c; 6. Complexe c3 = (Complexe)c; 7. Complexe c4 = (Complexe)c1;

Les cinq premières instructions sont valides. 2 et 4, à cause du polymorphisme, 3 car CompteurModulo est une sous-classe de Compteur et 5 car Compteur est une sous-classe de Object.
L'instruction 6 est invalide, cette invalidité serait seulement constatée à l'exécution, le transtypage est syntaxiquement correct car Complexe est une sous-classe de Object, mais le type dynamique de c est ici CompteurModulo à cause des instructions 2 et 4.
L'instruction 7 est invalide, mais cette invalidité serait détectée à la compilation car Complexe n'est pas une sous-classe de Compteur.

Il est intéressant de constater que pour les instructions 6 et 7, les références c et c1 pointent sur le même objet (voir instruction 4). Il est donc préférable de maintenir le type statique le plus précis possible (ici Compteur) pour éviter les erreurs dynamiques de transtypage.

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