ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
326
326
EMPFEHLEN
-
Hallo,
vielleicht mag dies ja auch eine saublöde Frage sein, aber leider finde ich nirgends so die richtige(einleuchtende) Antwort.
Wozu braucht man Interfaces, wenn die Implementierung dann doch in der eigentlichen Klasse jedesmal vorgenommen werden muss?
Gruss
Brunso
-
28.06.07 07:30 #2
- Registriert seit
- Aug 2006
- Ort
- Europe - Germany - Mainz
- Beiträge
- 296
Hallo brunso,
hier sind Interfaces eigentlich recht gut erklärt.
Es geht halt darum das man eigene Klassen schreibt und dem Nutzer dieser Klassen die Möglichkeit gibt mit diesen zu interagieren, dazu die Interfaces, man zwingt ihn quasi dazu eine eigene Klasse zu schreiben, die die im Interface benannten Methoden enthält und somit seinen Nutzen aus den Klassen zu ziehen.
gruß klaus.
-
Danke KlaDi,
ne, das ist soweit ja auch klar, nur warum. Also wenn ich ein Interface schreibe, dann habe ich da ja keine implementierungen drin. Genauso wenn ich in meine Klasse implements ActionListener hat. Die Methoden darin sind dann ja auch nur die Rümpfe, implementieren muss ich es ja selbst.
Aber kann man sich dann nicht das ganze "implements IRGENDWAS" sparen?
Ist die Frage zu doof?
Gruss
Brunso
-
28.06.07 08:12 #4
- Registriert seit
- Aug 2006
- Ort
- Europe - Germany - Mainz
- Beiträge
- 296
Hallo brunso,
die Methoden die dann automatisch implementiert werden geben Dir ja die Möglichkeit bei einem bestimmten eintreffenden Ereignis etwas bestimmtes auszuführen.
Nehmen wir jetzt mal als Beispiel den Mouselistener.
Dann musst Du gleich 3 Methoden implementieren:
Code :1 2 3 4 5 6 7 8 9 10 11 12
public void mouseDoubleClick(MouseEvent e) { // TODO Auto-generated method stub } public void mouseDown(MouseEvent e) { // TODO Auto-generated method stub } public void mouseUp(MouseEvent e) { // TODO Auto-generated method stub }
Somit hast Du die Möglichkeit zu sagen, was passieren soll, wenn mit der Maus auf etwas geklickt wurde. Was passieren soll, wenn doppelt auf etwas geklickt wurde und was passieren soll, wenn die Mauslosgelassen wurde.
Wären diese Methoden nicht schon vorgeben, müsstest Du erstmal selbst den Code entwicklen, der auf die Maus reagiert und prüft ob geklickt wurde, wie oft geklickt wurde und an welcher Stelle. Durch die Interfaces wird die im Endeffekt arbeit abgenommen und Du kannst Dich darauf beschränken, was passieren soll, wenn eines der Ereignisse eintritt.
gruß klaus.
-
Hallo,
um es mal kurz zu an einem Beispiel des ActionListeners zu erklären.
Jedes Object(z. b. JButton) dem man einen ActionListener hinzufügen kann. Hat eine Liste mit den ganzen ActionListenern. Wenn man nun auf einen Button klickt arbeitet er die Liste ab und führt jedes mal die Methode actionPerformed aus. Das funktioniert aber nur durch das Interface. Hättest du das Interface nicht, müsste der JButton wissen, welche Klasse das ist die die Methode hat. Also muss es nicht immer auf ne andere Klasse gecastet werden sondern immer nur auf das Interface.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
package tutorials; public class InterfaceExmple { public InterfaceExmple() { Ausfuerer ausfuerer = new Ausfuerer(); ausfuerer.addMyListener(new MyListenerImplementation()); ausfuerer.addMyListener(new NochMalMyListenerImplementation()); ausfuerer.ausführen(); } public static void main(String[] args) { new InterfaceExmple(); } }
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
package tutorials; import java.util.ArrayList; import java.util.Iterator; public class Ausfuerer { private ArrayList listeners = new ArrayList(); public void addMyListener(MyListener listener){ listeners.add(listener); } public void removeMyListener(MyListener listener){ listeners.remove(listener); } public void ausführen(){ for (Iterator iter = listeners.iterator(); iter.hasNext();) { MyListener listener = (MyListener) iter.next(); listener.action(); } } }
Code java:1 2 3 4 5 6 7 8 9 10 11
package tutorials; public class MyListenerImplementation implements MyListener { public void action() { System.out.println("Dafür ist ein Interface"); } }
Code java:1 2 3 4 5 6 7 8 9 10 11
package tutorials; public class NochMalMyListenerImplementation implements MyListener { public void action() { System.out.println("Nochmal"); } }
Code java:1 2 3 4 5 6 7
package tutorials; public interface MyListener { public void action(); }
Ich hoffe das ist etwas verständlich.
MFG
zEriXGeändert von zerix (28.06.07 um 08:53 Uhr)
Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Super und vielen Dank,
das Hirn hat es endlich geschnallt, super
Danke
Gruss
Brunso
-
28.06.07 09:56 #7
- Registriert seit
- Aug 2006
- Ort
- Europe - Germany - Mainz
- Beiträge
- 296
Hallo,
das ist gut. Setz doch bitte noch den Post auf erledigt.
gruß klaus.
Ähnliche Themen
-
Interfaces in anderen Interfaces implementieren
Von mueslirocker im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 0Letzter Beitrag: 12.09.10, 18:12 -
interfaces
Von jiim im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 3Letzter Beitrag: 27.07.07, 08:06 -
interfaces
Von lernen.2007 im Forum JavaAntworten: 7Letzter Beitrag: 23.03.06, 15:30 -
C++ und Interfaces
Von Jens Hibbeler im Forum C/C++Antworten: 2Letzter Beitrag: 11.10.05, 10:11 -
Ínterfaces
Von Swishagent im Forum Flash PlattformAntworten: 1Letzter Beitrag: 05.07.01, 12:06





Zitieren

Login





