hyperion Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 Hallo, in Java wird ja nur Einfachvererbung unterstützt. Um aber auch die Möglichkeit zu haben von mehreren Klassen etwas zu erben hat man Schnittstellen eingeführt. Wenn ich in meiner Klasse nun über "implements" eine Schnittstelle implementiere muss ich ja alle in der Schnittstelle enthaltenen Methoden in meiner Klasse einbauen. Gut für die Verwendung von Schnittstellen reicht denke ich das Wissen aber zur Erstellung eigener Schnittstellen nicht. Ich habe gelesen, dass eine Schnittstellenklasse nur aus leeren Methoden besteht. Ich frage mich dann aber woher die Funktionalität der Methoden der Schnittstelle kommt. Die Schnittstelle müsste die Funktionalität irgendwo anders her erben, andererseits würde die Schnittstelle ja wieder durch die leeren Mehtoden die geerbten Methoden überschreiben. mfg hyperion Zitieren
LadyPreis Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 (bearbeitet) Java ist auch eine Insel - SChnittstellen PS: Die Funktionalität der Methoden bestimmst du in den Klassen, welche das Interface implementieren. Erstellst du dir beispielsweise eine Schnittstelle "Fahrzeug" mit der leeren Methode "fortbewegen". In den Klassen schreibst du dann, was in der Methode passieren soll (beispielsweise wird in der Klasse "Auto" innerhalb der Methode das Fahren beschrieben, in der Klasse "Flugzeug" wiederrum das Fliegen). Sieh die Interfaces ein bißchen nur als Erinnerungsfunktion an, die dir sagt, dass die Klasse, an der du arbeitest, noch die vom Interface bereitgestellte Methode implementieren muss. Bearbeitet 15. Januar 2009 von LadyPreis Zitieren
hyperion Geschrieben 15. Januar 2009 Autor Geschrieben 15. Januar 2009 Aber das kann doch nicht sein, dass eine Schnittstelle bloß eine Erinnerungsfunktion hat und mich dazu zwingt die Mehtoden einzubauen. Demnach wäre es ja möglich z.B eine actionPerformed() Methode einzubauen ohne ActionListener zu implementieren. Ich bezweifle, dass das funktioniert. mfg hyperion Zitieren
kingofbrain Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 Eine Schnittstelle ist mehr als eine Erinnerungsfunktion, sie ist ein Vertrag. Wenn Du ein Interface implementierst, dann verpflichtest Du Dich, die dort enthaltenen Methoden zu implementieren. Das ist der Vertrag. Du kannst jederzeit eine actionPerformed Methode bereitstellen, ohne ein Interface zu implementieren. Aber keiner wird von Dir wissen, dass Du ein ActionListener bist, und deshalb macht das keinen Sinn. Überleg mal von der Seite des Verwenders. Du willst, dass auf einen Button Klick etwas passiert. Es ist Dir völlig egal, wie die Klasse heißt, was sie sonst noch so macht, sie soll nur eine actionPerformed-Methode haben. Deshalb brauchst Du einen ActionListener. Jeder, der sich bereit erklärt, diese Schnittstelle zu implementieren, kann prinzipiell von Dir verwendet werden. Peter Zitieren
hyperion Geschrieben 15. Januar 2009 Autor Geschrieben 15. Januar 2009 Hmm irgendwie ist mir der Vorteil von den Schnittstellen imernoch nicht ganz klar, ich weiß aber auch nicht wie ich fragen soll. Naja ich hoffe mal, dass mir die Erleuchtung in der Berfusschule kommt wenn wir das dann im nächsten Jahr durchnehmen. mfg hyperion Zitieren
TDM Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 Der Vorteil ist, dass wenn du z.B. in einer Funktion nur Schnittstellenfunktionen abrufst, dass du dann den Parameter als Schnittstellen-Objekt deklarierst. Dann brauchst du z.B. nicht die Klasse des Objektes zu kennen, sondern nur die Schnittstelle. Das einfachste Beispiel ist denk ich mal, wenn du eine Classe vom JFrame ableitest und gleichzeitig noch die Schnittstelle für die ActionPerforms implementierst. Ein anderes Beispiel ist z.B. wenn du generische Listen verwendest, da es in Java keine Mehrfachverbung gibt, kannst du so Objekte einer Klasse (,welche das Interface implementieren,) speichern. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.