IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Heritage et instanciation


Sujet :

Langage Java

  1. #1
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 616
    Points
    616
    Par défaut Heritage et instanciation
    Bonjour, je suis sur un exercice et j'aimerais avoir votre avis sur cce que j'ai fait et votre aide sur ce que je bloque.

    Soient 6 classes C1,...C6 et une interface I avec :
    C2 extends C1 implements I
    C3 extends C1
    C4 extends C2
    C5 extends C2
    C6 extends C3 implements I.

    Maintenant dans un main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    C1 a1 = new C1();
    I a2 = new C4();
    I a3 = new C6();
    C3 a4 = new C6();
    C3 a5 = a3;
    a5 = a4;
    a2 = a3;
    C2 a6 = new C2();
    a4 = a6;
    C4 a7 = a6;
    a6 = a2;
    Pour chaque instruction je dois :
    - dire si elle passe à la compilation
    - si non la corriger par un cast
    - puis dire si elle passe à l'execution.

    Ce que je propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    C1 a1 = newC1();
    I a2 = new C4();
    I a3 = new C6();
    C3 a4 = new C6();
    C3 a5 = (C3)a3;
    a5 = a4;
    a2 = a3;
    C2 a6 = new C2();
    (C1)a4 = (C1)a6;  // mais là ça ne passe toujours pas à la compilation
    C4 a7 = a6;  // là je vois pas trop, à part qu'elles ont C1 et I en commun
    a6 = (C2)a2;
    Merci de votre aide.

  2. #2
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Points : 53
    Points
    53
    Par défaut
    Salut, voilà la correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    		C1 a1 = new C1();
    		I a2 = new C4();
    		I a3 = new C6();
    		C3 a4 = new C6();
    		C3 a5 = (C3)a3;
    		a5 = a4;
    		a2 = a3;
    		C2 a6 = new C2();
     
    /*a6 est un C2 qui hérite de C1 (premier cast) => C3 hérite de C1 deuxième cast => Ceci passe à la compilation mais pas à l'exécution*/
    		a4 = (C3)((C1)a6);
     
    		C4 a7 = (C4)a6;
    		a6 = (C2)a2;
    A++

Discussions similaires

  1. heritage des contraintes
    Par krimson dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 30/04/2004, 12h04
  2. [Kylix] heritage multiple et interfaces :(
    Par le_barbu dans le forum EDI
    Réponses: 4
    Dernier message: 26/01/2004, 19h30
  3. [Postgres] Pb d'heritage...
    Par anonia dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/08/2003, 22h34
  4. [HERITAGE] Redondance ou pas redondance ???
    Par cyrillus76 dans le forum Schéma
    Réponses: 1
    Dernier message: 11/06/2003, 09h46
  5. [PostgreSQL] Question vis a vis de l'heritage...
    Par Gandalf dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/05/2003, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo