Overload( ecrasement de methodes) ne fonctionne pas

Fermé
tatsuyad Messages postés 74 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 3 avril 2016 - 16 oct. 2015 à 09:11
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 16 oct. 2015 à 20:29
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 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
16 oct. 2015 à 20:29
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