public abstract class BinaryOperation implements Term
{
private int Left;
private int Right;
public Term getLeft(){
return this.Left;
}
public Term getRight(){
return this.Right;
}
}
Irgendwas stimmt hier wieder nicht .
Ich muss doch left und right als private definieren oder ?
wenn Left und Right (nach Konvention eigentlich klein geschrieben) vom Typ int sind, musst du auch ein int zurückgeben.
Ich kenne BlueJ nicht, aber eclipse hilft dir auch bei gettern, kannst es ja mit BlueJ auch testen:
Lösche die Funktionen getLeft und getRight komplett. Tippe dann get und drücke Strg+Leertaste.
In eclipse (ebenso NetBeans) kommt da ein Menü, das dir getLeft anbietet. Wenn du das auswählst, wird der Code ergänzt.
public abstract class BinaryOperation implements Term
{
private int left;
private int right;
public Term getLeft(){
return this.left;
}
public Term getRight(){
return this.right;
}
}
public abstract class BinaryOperation implements Term
{
private int left;
private int right;
public Term int getLeft(){
return this.left;
}
public Term int getRight(){
return this.right;
}
}
Original von javaneu
c) Schreiben Sie als Nächstes die abstrakte Klasse BinaryOperation, die ebenfalls das Interface
Term implementiert. Schreiben Sie die Methoden public Term getLeft() und public Term
getRight(), die den linken bzw. rechten im Konstruktor festgelegten Operanden der Operation
zurückgeben. Die Methode getValue() schreiben Sie hier nicht ? warum geht das?
Sorry euler, aber Term muss sogar der Rückgabetyp sein. Fehlerhaft ist der Type der privaten Felder. Außerdem fehlt noch der Konstruktor.
Gruß,
Karlito
28.02.2015 20:29
javaneu unregistriert
public abstract class BinaryOperation implements Term
Hier auch ein fEHLER:
Es wird gesagt BinaryOperation is public .
Should be declared in a file named Binary Operation.
d) Erstellen Sie die Klasse Addition als Unterklasse von BinaryOperation und implementieren Sie
nun die Methode getValue() so, dass diese die arithmetische Summe der beiden Operanden berechnet
und zurückgibt. Vergessen Sie den Konstruktor der Klasse nicht.
public abstract class BinaryOperation implements Term {
private int left;
private int right;
public BinaryOperation(int left, int right) {
this.left = left;
this.right = right;
}
public int getLeft() {
return left;
}
public int getRight() {
return right;
}
}
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public class Addition extends BinaryOperation {
public Addition(int left, int right) {
super(left, right);
}
@Override
public int getValue() {
return this.getLeft() + this.getRight();
}
}
Addition braucht einen Konstruktor, der die Werte für rechts und links entgegennimmt. Diese werden dann an den Konstruktor der Basisklasse übergeben (super(left, right)). Ein Member value brauchst du nicht zwingend. Natürlich könntest du die Addition auch einmal im Konstruktor durchführen, statt jedes Mal bei getValue().