// Y et Z sont des classes spécialisées de la classe X
X x = new X();
Y y = new Y();
Z z = new Z();
X xy = new Y(); // compilation ok (généralisation)
X xz = new Z(); // compilation ok (généralisation)
Y yz = new Z(); // type non compatible (fratrie)
Y y1 = new X(); // X n'est pas Y
Z z1 = new X(); // X n'est pas Z
X x1 = y; // compiles ok (y est une spécialisation X)
X x2 = z; // compiles ok (z est une spécialisation X)
Y y1 = (Y) x; // compilation ok mais produit une erreur d'exécution
Z z1 = (Z) x; // compilation ok mais produit une erreur d'exécution
Y y2 = (Y) x1; // compilation et exécution ok (x1 est de type Y)
Z z2 = (Z) x2; // compilation et exécution ok (x2 est de type Z)
Y y3 = (Y) z; // type non convertible (fratrie)
Z z3 = (Z) y; // type non convertibles (fratrie)
Object o = z;
Object o1 = (Y) o; // compilation ok mais produit une erreur d'exécution
Ce message fût publié le 20 août 2010 à 10:49 et classé sous Java. Vous pouvez suivre toutes les réponses à cette entrés via RSS 2.0.
Vous pouvez laisser une réponse, ou un trackback de votre site.