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.
Hallo !
Meine Frage bezieht sich auf ein von mir erstelltes Interface Test
wo 3-4 Methoden Anweisungen bekommen sollen.
Doch sagt mir dann der compiler das dies nicht geht da kein Body erlaubt ist.
Der Quelltext ist auch etwas schwierig zu lesen. Man erkennt nicht direkt ob das, was du geschrieben hast jetzt eine Methode sein soll oder ob es ein Konstruktor ist etc.
Generell ist es gut sich an folgende Konventionen zu halten:
1. Klassennamen werden groß geschrieben.
2. Logischerweise wird der Konstruktor einer Klasse also ebenfalls groß geschrieben.
3. Methodennamen und Variablen werden kleingeschrieben
4. Bei Methoden sollte man immer die entsprechenden Modifier angeben, auch wenn sie manchmal nicht nötig sind.
z.b
Code:
[B]public [/B] void myNewMethod(){}
Ein Beispiel für ein Interface "Test":
btw, Interfaces benennt man meistens mit einem Großen i im Namen. Daran kann man gleich sehen, dass es sich um ein Interface handelt. Nennen wir es also "ITest"
Java:
public interface ITest {
void setNewNumber(int newValue);
int whatIsThatNumber();
}
Das ist also nun ein Interface, welches zwei Methoden definiert, die jede Klasse implementieren muss, die dieses Interface benutzt.
Eine Test Klasse, die dieses Interface nutzt könnte dann so aussehen:
Java:
public class TestClass implements ITest{
@Override
public void setNewNumber(int newValue) {
// TODO Auto-generated method stub
}
@Override
public int whatIsThatNumber() {
// TODO Auto-generated method stub
return 0;
}
}
Wie man sieht, MUSS diese Test Klasse die beiden Methoden aus dem Interface implementieren, damit alles kompiliert. Wie genau die implementierung dann aussieht ist ausschließlich dem Programmierer überlassen. Durch die Verwendung des Interfaces stellt man lediglich sicher, dass diese Methoden definitiv vorhanden sind und nicht vergessen werden.
Eigentlich nicht. Die ursprüngliche Idee ist, für Interfacenamen Adjektive zu benutzen (also z.B. Testable, Cloneable, Comparable, etc.) - wie man für Klassennamen Substantive und für Methodennamen Verben verwendet. Leider funktioniert das mit den Adjektiven in der Praxis nicht immer.
Daran kann man gleich sehen, dass es sich um ein Interface handelt.
Warum will man das? Erstens zeigt es die IDE sowieso an, und zweitens wird der Compiler bzw. IDE früh genug meckern, wenn ich das Interface falsch verwende. Das mit dem großen I halte ich für ein Unsitte.
Warum will man das? Erstens zeigt es die IDE sowieso an, und zweitens wird der Compiler bzw. IDE früh genug meckern, wenn ich das Interface falsch verwende. Das mit dem großen I halte ich für ein Unsitte.
Ich auch. Ich weiß, dass das eine C#-Tradition ist, aber ich halte sie trotzdem für schlecht. Der Grund dafür ist ganz einfach: Dem Code, der das Ganze benutzt, sollte es völlig egal sein, ob er da ein Interface oder eine Klasse verwendet. Bei mir kommt es z.B. oft vor, dass aus einer Klasse später ein Interface wird, weil ich mehrere Implementierungen brauche. In vielen Fällen gelingt das, ohne dass der Code, der das Ding verwendet, geändert werden muss (auch dank DI).
Nun die entscheidende Frage: Was bringt es überhaupt zu wissen, ob es sich um ein Interface oder eine Klasse handelt? Nicht viel: Wenn ich es verwende, sollte es egal sein (ansonsten ist der Code zu stark gekoppelt), und wenn ich daran rumbasteln will, weiß ich es, oder muss sowieso hineinschauen.