Accueil
 Sommaire du cours
 1  Introduction à Java
 2  Concepts de bases de Java
 3  Classes et objets en Java
 4  Généralisation spécialisation en Java
 4.1  Généralisation spécialisation
 4.2  Polymorphisme
 4.2.1  Exemple de Upcast et Downcast
 4.3  Redéfinition de méthodes dans les classes dérivées
 4.4  Héritage, membres et visibilité
 Questions
 4.5  Classes abstraites
 4.6  Exemple de classe Abstraites
 4.7  Interfaces
 5  Organisation des sources Java
 6  API Java
 7  Exceptions en Java
 8  Concepts objets avancés en Java
 Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


4.2.1 Exemple de Upcast et Downcast
 
import personnes.Personne; 
2import personnes.Enseignant; 
public class UpDownExample { 
    public static void main(final String[] args) { 
        Personne p; 
6        Enseignant e = new Enseignant("Durand","Emilie", 
                "2780633...",3,"CloudComputing"); 
        p = e;      // UpCast 
        System.out.println("Apresp=e;pestunePersonne" 
10                + (p instanceof Personne) 
                + ";pestunEnseignant" 
                + (p instanceof Enseignant)); 
        e = (Enseignant) p; // Downcast 
14        System.out.println("Aprese=p;eestunePersonne" 
                + (e instanceof Personne) 
                + ";eestunEnseignant" 
                + (e instanceof Enseignant)); 
18    } 
}

 
verbatim

    précédent     suivant 


Dans cet exemple, la variable p de type référence de classe parente peut recevoir la référence d’un objet de classe dérivée, contenue dans e. Inversement, une fois qu’une référence de classe parente contient une référence vers un objet de la classe dérivée, il est possible de mettre cette valeur dans une variable pouvant contenir une référence de la classe parente. Il faut cependant informer le compilateur de cette possible perte de sens en castant la référence.

Christian Bac, Denis Conan, Télécom SudParis, CSC 4002, Octobre 2015