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.
Ich verstehe nicht so ganz wozu Interfaces gut sein sollen. Ich meine man muss ja alle Methoden überschreiben, und Instanzvariablen gibt es auch keine, also wieso gibt es so etwas? Ich meine man könnte ja gleich in jeder Klasse neue Methoden schreiben, da man sie ja bei einem Interface sowieso überschreiben muss oder? Kann mich da bitte wer aufklären?
Danke, mfg Fleckdalm
Du willst lose Elemente schreiben die sich nicht alle direkt kennen. Es wär ideal wenn du von einem Objekt nur die Schnittstelle nach aussen kennst. Dann könnte sogar einfach irgendjemand die Implementierung austauschen (solange die Schnittstelle gleich bleibt) und du könntest noch damit arbeiten.
Oder du willst gar nicht alle Details zu einem Objekt kennen, sondern nur zb das es auf ein gewisses Event hört das du ihm senden willst ... wäre toll wenn du für sowas Schnittstellen machen könntest.
Oder eine Methode eines anderen Objekts erwartet ein Objekt das eine bestimmte Funktionalität hat, wie teilst du dem jetzt mit das dein Objekt das kann, wenn das andere Objekt schon vordefiniert ist? Wäre cool wenn du nur eine vorhandene Schnittstelle überschreiben müsstes... ach Schnittstellen wären cool... ahh Interfaces ;-)
Gibt mehrer gute Anwendungsbereiche, mach dir nichts draus wenn du das nicht genau nachvollziehen kannst... das kommt mit der Erfahrung...
Gewisse Lösungen versteht man erst wenn man auf die entsprechende Probleme gestossen ist...
Mit dem Implementieren von Interfaces, kannst Du zusichern, dass eine Klasse einen bestimmten Zugriff ermöglicht.
Du schreibst dann eine Funktion, die sich nur auf die Methoden des Interfaces ausrichtet und dadurch automatisch mit jeder beliebigen Klasse umgehen kann, die dieses Interface verwendet.
Ein typisches Beispiel sind Interfaces wie Observer oder verschiedene Listener. Observer überwachen andere Objekte. Dafür haben sie eine Methode der ein "Ereignis" übergeben wird, wenn sich an dem überwachten Objekt etwas ändert.
Dafür sucht das Objekt seine Liste mit registrierten Überwachern durch und ruft (indirekt) bei jedem Observer
Java:
public void update(Observable o, Object arg)
auf. Wie willst Du nun sicherstellen, dass jedes Objekt, welches sich als Überwacher registriert, auch wirklich diese Funktion besitzt?
Sonst kannst Du sie ja nicht aufrufen.
Deswegen verwendest Du das Interface "Observer". Wenn eine Klasse dieses Interface implementiert, kannst Du sicher sein, dass es die Methode "update(...)" auch besitzt und Du es entsprechend verwenden kannst.
Wie könnte man das sonst erreichen? Mit Vererbung natürlich. Aber java bietet da zum Beispiel keine "Mehrfachvererbung" an. Du möchtest vielleicht bereits eine andere Klasse beerben. Wenn Du jetzt zusätzlich noch eine bestimmte Schnittstelle garantieren willst, dann nimmst Du ein Interface.
Von denen kannst Du auch mehrere Implementieren.
Vererbung sagt im wesentlichen "Ich bin vom Typ A und beinhalte Verhalten von Typ B. Ich bin AUCH vom Typ B, je nach Sichtweise."
Das Interface sagt "Ich bin vom Typ A und ich kann als (Interface-)Typ B, C, D und E verwendet werden."