tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
326
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von brunso
    brunso brunso ist offline Mitglied
    Registriert seit
    Jun 2007
    Ort
    Köln
    Beiträge
    23
    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
     

  2. #2
    KlaDi KlaDi ist offline Mitglied Brokat
    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.
     

  3. #3
    Avatar von brunso
    brunso brunso ist offline Mitglied
    Registriert seit
    Jun 2007
    Ort
    Köln
    Beiträge
    23
    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
     

  4. #4
    KlaDi KlaDi ist offline Mitglied Brokat
    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.
     

  5. #5
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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

    zEriX
    Geändert von zerix (28.06.07 um 08:53 Uhr)
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  6. #6
    Avatar von brunso
    brunso brunso ist offline Mitglied
    Registriert seit
    Jun 2007
    Ort
    Köln
    Beiträge
    23
    Super und vielen Dank,

    das Hirn hat es endlich geschnallt, super

    Danke

    Gruss

    Brunso
     

  7. #7
    KlaDi KlaDi ist offline Mitglied Brokat
    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

  1. Interfaces in anderen Interfaces implementieren
    Von mueslirocker im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 0
    Letzter Beitrag: 12.09.10, 18:12
  2. interfaces
    Von jiim im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 3
    Letzter Beitrag: 27.07.07, 08:06
  3. interfaces
    Von lernen.2007 im Forum Java
    Antworten: 7
    Letzter Beitrag: 23.03.06, 15:30
  4. C++ und Interfaces
    Von Jens Hibbeler im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 11.10.05, 10:11
  5. Ínterfaces
    Von Swishagent im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 05.07.01, 12:06