Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Softwaretechnik (http://www.informatikerboard.de/board/board.php?boardid=18)
----- Vererbung (http://www.informatikerboard.de/board/thread.php?threadid=2145)
Geschrieben von eulerscheZahl am 28.02.2015 um 19:50:
Kontrolliere mal die Klammersetzung.
Geschrieben von javaneu am 28.02.2015 um 20:07:
Blöder Fehler .
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
|
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 ?
Geschrieben von eulerscheZahl am 28.02.2015 um 20:12:
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.
Geschrieben von javaneu am 28.02.2015 um 20:19:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
public abstract class BinaryOperation implements Term
{
private int left;
private int right;
public Term getLeft(){
return this.left;
}
public Term getRight(){
return this.right;
}
}
|
|
Funktioniert immer noch nicht ?
Geschrieben von eulerscheZahl am 28.02.2015 um 20:20:
Du hast doch nur die Groß-/Kleinschreibung geändert.
public int getLeft()
Geschrieben von javaneu am 28.02.2015 um 20:20:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
|
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;
}
}
|
|
Fehler identifier expected markierung bei term
Geschrieben von eulerscheZahl am 28.02.2015 um 20:22:
Term hat an der Stelle ja auch nichts verloren.
Geschrieben von Karlito am 28.02.2015 um 20:29:
RE: Vererbung
| Zitat: |
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
Geschrieben von javaneu am 28.02.2015 um 20:30:
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.
Darf man das so nicht lassen?
Geschrieben von eulerscheZahl am 28.02.2015 um 20:33:
Steht doch alles da, du hast die Datei anders benannt, als die Klasse.
BinaryOperation gehört in die Datei BinaryOperation.java
Geschrieben von javaneu am 28.02.2015 um 20:47:
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.
Wie erstellt man genau eine Unterklasse bei java?
Geschrieben von eulerscheZahl am 28.02.2015 um 20:53:
| code: |
1:
|
public class Addition extends BinaryOperation |
|
Den Konstruktor solltest du bei BinaryOperation auch noch ergänzen.
Ist zwar abstract, aber irgendwo musst du right und left ja zuweisen.
Geschrieben von javaneu am 28.02.2015 um 21:08:
public class Addition extends BinaryOperation{
private int value;
AbsoluteTerm(int value) {
this.value = value;
//hier kommt noch was
}
public int getValue(){
return this.value;
}
}
Ich weiss das ich noch implementieren muss die get methode.
Aber blue j meckert schon .
invalid method ,return type required
Ich verliere die geduld
Geschrieben von eulerscheZahl am 01.03.2015 um 06:54:
Um das Ganze abzukürzen:
| code: |
1:
2:
3:
|
public interface Term {
public int getValue();
} |
|
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
|
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().
Forensoftware: Burning Board, entwickelt von WoltLab GmbH