Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen?
Ich soll in einem Konstruktor eine Methode eines anderen Interfaces mit dessen Parameter aufrufen, welche dem Konstruktor übergeben wurden. Wie stelle ich das an?
Mein Ansatz:
Kleiner Auszug aus dem Interface:
Java:
public interface TwinRobot {
void getCoin(int z);
}
(Methode getCoin mit jeweils einem int-Parameter & void als Rückgabetyp)
Meine Idee zum Aufrufen des Konstruktor:
Java:
public class TwinRobotImpl extends Robot implements TwinRobot {
public TwinRobotImpl(int x, int y, Direction direction, int numberOfCoins, int putCoin) {
super(7, 7, Direction.LEFT, 20);
this.getCoin() = getCoin();
}
Hat jemand eine Ahnung, was genau mein Fehler sein könnte? Vllt muss ich den Parameter von getCoin erst irgendwie implementieren? Hilfe wird sehr geschätzt
Die Klasse TwinRobotImpl implementiert ja das Interface TwinRobot und muss damit die Methode getCoin() zur Verfügung stellen. Du kannst die Methode einfach aufrufen (allerdings sollte man keine öffentliche Methoden der Klasse im Konstruktor der Klasse aufrufen). Du versuchts hingegen einer Methode etwas zuzuweisen. Das geht nicht.
EDIT: Sollte deine Beschreibung der Aufgabe stimmen, dann ist das ein etwas unüblicher Einsatz eines Interfaces. Bist du sicher?
Die Klasse TwinRobotImpl implementiert ja das Interface TwinRobot und muss damit die Methode getCoin() zur Verfügung stellen. Du kannst die Methode einfach aufrufen (allerdings sollte man keine öffentliche Methoden der Klasse im Konstruktor der Klasse aufrufen). Du versuchts hingegen einer Methode etwas zuzuweisen. Das geht nicht.
EDIT: Sollte deine Beschreibung der Aufgabe stimmen, dann ist das ein etwas unüblicher Einsatz eines Interfaces. Bist du sicher?
Danke für deine Antwort! Meine Aufgabe war es erst ein public-Interface TwinRobot mit mehreren Methoden unter anderem getCoin mit jeweils einem int-Parameter und void als Rückgabetyp zu schreiben, was ich so gelöst habe wie man es oben sieht. In der Folgeaufgabe sollte ich dann eine public-Klasse TwinRobotImpl direkt von Robot ableiten und im Anschluss soll diese Klasse das Interface TwinRobot implementieren. Daraufhin sollte für TwinRobotsImpl ein public-Konstruktor mit einem Parameter vom Typ int geschrieben werden und dieser mit den Parametern oben initialisiert werden. Letztendlich soll im Konstruktor die Methode getCoin aus der ersten Aufgabe mit dem Parameter aufzurufen, welcher dem Konstruktor übergeben wurde.
Also zu meinem Verständnis: this.getCoin() = getCoin; kann ich nicht schreiben, weil dies zur Überschreibung führen wollte. Stattdessen rufe ich die Methode einfach nach dem Konstruktor auf?
getCoin() ist eine Methode (erkennbar an den Klammern). Einer Methode kann man nichts zuweisen. Du kannst nur in den Klammern Parameter angeben, sofern die Methode das erfordert.
Eine Methode wie gezeigt void getCoin(int z) erwartet die Angabe eines int-Parameters, also z. B. getCoin(42);
Allerdings muss deine Klasse, aufgrund der Angabe von implements TwinRobot auch alle im Interface deklarierten Methoden implementieren.
[CODE lang="java" title="Beispiel"]public class TwinRobotImpl implements TwinRobot {
// mehr Methoden
public void getCoin(int z) {
// hier Code
}
}[/CODE]
getCoin() ist eine Methode (erkennbar an den Klammern). Einer Methode kann man nichts zuweisen. Du kannst nur in den Klammern Parameter angeben, sofern die Methode das erfordert.
Eine Methode wie gezeigt void getCoin(int z) erwartet die Angabe eines int-Parameters, also z. B. getCoin(42);
Ahh, also ich schätze, dass ich dann getCoin(20); schreiben sollte und 20 den Parameter darstellt, da 20 die Anzahl der Coins darstellt, die ich initialisieren soll.
Ahh, also ich schätze, dass ich dann getCoin(20); schreiben sollte und 20 den Parameter darstellt, da 20 die Anzahl der Coins darstellt, die ich initialisieren soll.
Eher getCoin(numberOfCoins), wenn es der Wert des Parameters sein soll.
Der Name der Methode ist mit getCoin() an dieser Steller allerdings etwas verwirrend. Da erwarte ich eher die Rückgabe eines Wertes. Die müsste eher setCoin() heißen, wenn sie etwas initialisieren soll.
Aber, wie schon geschrieben, ich finde das alles etwas fragwürdig.
Der Name der Methode ist mit getCoin() an dieser Steller allerdings etwas verwirrend. Da erwarte ich eher die Rückgabe eines Wertes. Die müsste eher setCoin() heißen, wenn sie etwas initialisieren soll.
Ich habe gerade nochmal nachgelesen und der Name der Methode soll setCoin() heißen, was eventuell auch noch mehr Sinn ergibt. Bin in der Zeile verrutscht und getCoin() ist eine neue Methode
Ich habe gerade nochmal nachgelesen und der Name der Methode soll putCoin() heißen, was eventuell auch noch mehr Sinn ergibt. Bin in der Zeile verrutscht und getCoin() ist eine neue Methode
Eher getCoin(numberOfCoins), wenn es der Wert des Parameters sein soll.
Der Name der Methode ist mit getCoin() an dieser Steller allerdings etwas verwirrend. Da erwarte ich eher die Rückgabe eines Wertes. Die müsste eher setCoin() heißen, wenn sie etwas initialisieren soll.
Aber, wie schon geschrieben, ich finde das alles etwas fragwürdig.