Salve gente,
ho un problema con la ridefinizione del metodo toString. Praticamente ho una gerarchia di classi, e delle innerclass in cui ridefinisco il metodo toString. Quando però richiamo il metodo toString di una di queste innerClass esso non mi viene riconosciuto. Vi posto il codice delle inner class:
codice:
public class OperatoreNumerico {
EspressioneAritmetica left;
EspressioneAritmetica right;
public OperatoreNumerico() {
left = null;
right = null;
}
public OperatoreNumerico(String s) {
if (s == "*")
new MUL();
if (s == "/")
new DIV();
if (s == "^")
new POWER();
}
@Override
public void setLeft(Espressione e) {
if (!(e instanceof EspressioneAritmetica)) {
System.out
.println("Ad un operatore logico possono essere assegnati solo espressioni booleane");
return;
}
left = e;
}
@Override
public void setRight(Espressione e) {
if (!(e instanceof EspressioneAritmetica)) {
System.out
.println("Ad un operatore logico possono essere assegnati solo espressioni booleane");
return;
}
right = e;
}
@Override
public Espressione getLeft() {
return left;
}
@Override
public Espressione getRight() {
return right;
}
public String toString() {// fittizio
String s = null;
if (this instanceof PLUS)
s = "" + left.toString() + " + " + right.toString();
return s;
}
public class POWER extends OperatoreNumerico {
public String toString() {
return left.toString() + " ^ " + right.toString();
}
}
public class MUL extends OperatoreNumerico {
public String toString() {
return left.toString() + " * " + right.toString();
}
}
public class DIV extends OperatoreNumerico {
public String toString() {
return left.toString() + " / " + right.toString();
}
}
Adesso vi posto il pezzo del main in cui richiamo il toString:
OperatoreNumerico mul = new OperatoreNumerico("*");
Numero n1 = new Numero(5);
Numero n2 = new Numero(3);
mul.setLeft(n1);
mul.setRight(n2);
System.out.println(mul.toString());
e questo è l'errore che mi da:
Composite.OperatoreNumerico@164f1d0d
In pratica richiama il toString di Object.. Perchè non viene effettuato l'overriding? In che cosa sbaglio?