Overload( ecrasement de methodes) ne fonctionne pas

tatsuyad Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 19031 Statut Modérateur -
Bonjour.

D'abord, regardez mon code s'il vous plait.



public class Ren2 {
public static void main(String[] args){
Subren2 sr2 = new Subren2(22);
sr2.dit();
}
}







public class Subren2 {
private double var;
public Subren2(int var){
(int)this.var = var; // Cette ligne ne marche pas !
// La ligne n'est pas consideree comme une variable !
}
public Subren2(double var){
this.var = var;
}

void dit(){
System.out.println(var);
}
}


Je veux que, quand je mets 22 lors de l'instanciation de classe Subren2() et la variable "var" recoit 22, le methode "dit()" retourne 22 au lieu de 22.0 .

Je crois que le type int est superieur au type double et la conversion de type est implicitement effectuee.

J'ai essaye en modifiant ....

private int var;
...
public Subren2(double var){
(double) this.var =var;
}

Mais cela ne fonctionne pas.

Merci d'avance pour votre aide.

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

Les casts explicites doivent se mettre sur la valeur que l'on force, pas sur la variable qui reçoit la donnée puisque la conversion a lieu en amont.

this.var = (double) var;

Remarque : ici le cast est inutile car un int est plus petit qu'un double. Tu peux écrire :

this.var = var;
0