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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.