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:
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:
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.