Hallo Zusammen,
ich habe da mal eine Frage bezüglich einer Methode.
Folgender Code ist die Lösung zu Aufgabe, welche wir erhalten haben.
In der Klasse Plus ist eine Mehtode public int value(). Diese hat als Rückgabewert return left.value() + right.value();
Also das linke + das rechte Objekt. Aber hinter dem Punkt steht ja nochmal die selbe Methode. Würde dies nicht bedeuten, dass sich diese Methode unendlich oft aufruft?
Über einen Tipp würde ich mich freuen. Danke
ich habe da mal eine Frage bezüglich einer Methode.
Folgender Code ist die Lösung zu Aufgabe, welche wir erhalten haben.
In der Klasse Plus ist eine Mehtode public int value(). Diese hat als Rückgabewert return left.value() + right.value();
Also das linke + das rechte Objekt. Aber hinter dem Punkt steht ja nochmal die selbe Methode. Würde dies nicht bedeuten, dass sich diese Methode unendlich oft aufruft?
Über einen Tipp würde ich mich freuen. Danke
Code:
class TermUebung{
interface Term{
int value();
int depth();
String toString();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
public static class Number implements Term{
private final int number;
public Number(int number){
this.number = number;
}
public int value(){
return number;
}
public int depth(){
return 0;
}
public String toString(){
String n = Integer.toString(number);
return n;
}
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
public static class Plus implements Term{
private final Term left;
private final Term right;
public Plus(Term left, Term right){
this.left = left;
this.right = right;
}
public int value(){
return left.value() + right.value();
}
public int depth(){
return (1 + Math.max(left.depth() , right.depth() ) );
}
public String toString(){
//String n = Integer.toString();
return "(" + left.toString() + "+" + right.toString() + ")";
}
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
public static void main(String[] args) {
Term a = new Number(5);
Term b = new Plus(a, new Number(3));
check(a);
check(b);
}
public static void check(Term a) {
System.out.println(a + " is " + a.value() + " (depth " + a.depth() + ")");
}
}