Bonsoir à tous,

Je suis confronté à un problème de compréhension face à un bout de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
class Y{}; class Z extends Y{};
Et dans le main :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Z z=new Z(); 
Y y=new Y(); 
Z[] ty= new Z[10]; 
Y[] tx=ty; //mon suspect
ty[0]=y;// le vrai coupable ?
Le résultat aboutit à une erreur de compilation.
Le morceau de code en rouge est celui que je soupçonne être responsable car on ne peut pas mettre d'objets Z dans un tableau d'objets Y .

Le bout de code qui suit est vrai car on peut mettre un objet Y dans le tableau d'objets Z [puisque Z extends Y] (qui se trouve être le vrai coupable...mais pourquoi ?)

Un deuxième bout de code assez similaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
class Y{}; class Z extends Y{};
main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Z z=new Z(); 
Y y=new Y(); 
Z[] ty= new Z[10];
Y[] tx=ty; 
ty[0]=(Z)y;
Le résultat aboutit à un plantage à l'éxécution.
Si on me demande, je crois toujours que c'est "" Y[] tx = ty "" qui fout le boxon mais de l'un à l'autre , il n'y a que le bout de code en vert qui change..

Merci d'avance à vous de prendre le temps de me lire et de m'expliquer (accessoirement).