suivant: Surcharge
monter: Programmes Java illustrant le
précédent: Les types référence
Le premier exemple est un cas d'affectation incorrecte, qui ne peut
pas se compiler. C'est dans ce genre de cas qu'il faut utiliser une
conversion de type.
Cast0.java
|
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28
|
class Cast0{
public static void main(String[] argv){
Compteur c= new CompteurAPas(3);
c.incremente();
CompteurAPas cap = c;
System.out.println(c.valeur());
}
}
class Compteur{
protected int x = 0;
void incremente(){
x = x+1;
}
int valeur(){
return x;
}
}
class CompteurAPas extends Compteur{
protected int pas;
CompteurAPas (int p){
pas = p;
}
void incremente(){
x = x+pas;
}
}
|
Java2html
|
Le second exemple reprend l'exemple en réalisant la conversion qui
s'impose. Ce programme compile et s'exécute correctement.
Cast1.java
|
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28
|
class Cast1{
public static void main(String[] argv){
Compteur c= new CompteurAPas(3);
c.incremente();
CompteurAPas cap = (CompteurAPas) c;
System.out.println(c.valeur());
}
}
class Compteur{
protected int x = 0;
void incremente(){
x = x+1;
}
int valeur(){
return x;
}
}
class CompteurAPas extends Compteur{
protected int pas;
CompteurAPas (int p){
pas = p;
}
void incremente(){
x = x+pas;
}
}
|
Java2html
|
Le dernier exemple est un cas intermédiaire: une conversion explicite
légale, mais qu'il n'est pas possible d'exécuter. Ce programme ce
compile, mais l'exécution se termine par une erreur.
Cast2.java
|
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28
|
class Cast2{
public static void main(String[] argv){
Compteur c= new Compteur();
c.incremente();
CompteurAPas cap = (CompteurAPas) c;
System.out.println(c.valeur());
}
}
class Compteur{
protected int x = 0;
void incremente(){
x = x+1;
}
int valeur(){
return x;
}
}
class CompteurAPas extends Compteur{
protected int pas;
CompteurAPas (int p){
pas = p;
}
void incremente(){
x = x+pas;
}
}
|
Java2html
|
Barthelemy Francois
2003-03-03