Hallo,
ich bin gerade mit Kommilitonen am diskutieren wie genau eine unserer Aufgaben gelöst werden soll.
Wir haben ein Interface bekommen
und sollen eben das Beschriebene als Methode (ohne Schleifen, nur Rekursion) schreiben und dazu wie eigentlich immer eine main-Funktion.
Jetzt haben wir das Problem, dass wir nicht wissen ob wir das Interface direkt beim erstellen der Klasse implementieren sollen was zu
führt oder es selbst schreiben sollen, was zum zum gleichen Ergebnis führt, bis auf Zeile 4, in der wir bisher immer ein "public static ..." benutzt haben.
Wenn wir die erste Variante benutzen zeigt es uns mit
den Fehler "Cannot make a static reference to the non-static method toUpper(String) from the type StringToolkitImpl" mit quick fix "change toUpper to static". Wenn wir das machen zeigt und toUpper() den Fehler "This static method cannot hide the instance method from StringToolkit" an und falls wir nur "public void main(...)" schreiben funktioniert alles Fehlerfrei.
Wenn wir alles selbst schreiben funktioniert auch alles ohne Probleme, deshalb fragen wir uns, warum der Fehler bei toUpper() kommt wenn wir static dazuschreiben und warum es funktioniert wenn wir nur das static aus der main löschen.
Ich hoffe ich hab mich verständlich ausgedrückt und bedanke mich schonmal
ich bin gerade mit Kommilitonen am diskutieren wie genau eine unserer Aufgaben gelöst werden soll.
Wir haben ein Interface bekommen
Java:
public interface StringToolkit {
/**
* Diese Funktion akzeptiert einen String original als Parameter und liefert
* einen neuen String als Ergebnis, in dem alle Buchstaben des ursprünglichen
* Strings in Großbuchstaben umgewandelt enthalten sind.
* Gewandelt werden die Buchstaben a bis z und die Umlaute ä, ö und ü.
* Beispiel: "Viel Erfolg bei der Aufgabe!" wird umgewandelt in
* "VIEL ERFOLG BEI DER AUFGABE!".
*/
String toUpper(String original);
}
Jetzt haben wir das Problem, dass wir nicht wissen ob wir das Interface direkt beim erstellen der Klasse implementieren sollen was zu
Java:
public class StringToolkitImpl implements StringToolkit {
@Override
public String toUpper(String original) {
return null;
}
}
Wenn wir die erste Variante benutzen zeigt es uns mit
Java:
public static void main(String[] args) {
...
println(toUpper(original));
}
Wenn wir alles selbst schreiben funktioniert auch alles ohne Probleme, deshalb fragen wir uns, warum der Fehler bei toUpper() kommt wenn wir static dazuschreiben und warum es funktioniert wenn wir nur das static aus der main löschen.
Ich hoffe ich hab mich verständlich ausgedrückt und bedanke mich schonmal