Bref. Les cast me rendent fou.
Bonjour à tous,
Ayant lu quelques cours de Java, je reste bloqué sur le cast.
J'ai des exemples sous les yeux que je ne comprends pas.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class A {
void g() {System.out.println("A");}
public class B extends A {
void g() {System.out.println("B");}
public class C extends B{
void g() {System.out.println("C");}
/**
* @param args
*/
public static void main(String[] args) {
A a=new C(); ((C)a).g();
}
} |
Le code fonctionne et m'affiche C.
Maintenant, lorsque j'essai de caster l objet a en A, B, C ou même sans cast... ça fonctionne toujours...
A quoi sert mon cast ? En quoi ça joue à la compilation ou à l'éxecution ?
2eme Q:
Si j'ai : B(ou C) a=new C(); ((C)a).g();
Qu'est ce que ça change, sachant que ça donne le même résultat ?
Je suis embrouillé car C hérite quand meme de A et de B donc pourquoi le cast ?
Merci d'avance.