title image


Smiley Re: Interfaces unter Java. Welchen Vorteil habe ich von einem Interface
Wofür Interfaces gut sind?

Java kennt keine echte Mehrfachvererbung. Stell dir mal vor, Comparable wäre eine abstrakte Klasse und kein Interface. Jetzt leitest du deine Klasse von einer anderen (sagen wir z.B. "Papaklasse") ab, möchtest sie aber auch sortierbar haben. Ist deine Papaklasse direkt oder inderekt von unsererer fiktiven Comparable-Klasse abgeleitet, ist alles klar. Wenn nicht: PECH GEHABT, DU KANNST NUR VON EINER KLASSE ERBEN!!! In Wirklichkeit hast du aber Glück: Auch wenn die Papaklasse nicht sortierbar ist, kannst du trotzdem das Interface Comparable implementieren, d.h. die "Sortierfunktionen" nachliefern, und schon ist dein Papaklassen-Nachfolger sortierbar. Interfaces erleichtern z.B. auch nachträgliche Anpassungen. Z.B. gab es Vector und Hashtable lange vor den Listen bzw. Map-Interfaces. Man konnte die beiden Klassen aber ohne großen Aufwand in das neue Collection-Framework einpassen, einfach durch Zeilen "Vector implements List" und "Hashtable implements Map" (natürlich mit den entsprechenden Funktionen). Hätte man stattdessen Vector und Hashtable plötzlich von neuen Klassen, etwa AbstraktList und AbstractMap ableiten müssen, wäre das nicht so glatt über die Bühne gegangen. Damit kommen wir zum letzten wichtigen Punkt: Interfaces geben eine gewisse Flexibilität. Bibliotheken verlangen z.B. in der Regel nicht, dass du z.B. eine ArrayList oder eine HashMap verwendest, die Methoden sind "allgemein" für Listen und Maps geschrieben - was du gerade da hast. Insofern spezifizieren Interface einen "kleinsten gemeinsamen Nenner". Nebenbei bemerkt: Ohne Interfaces wären übrigens Sachen wie RMI, Reflection, JNI, Dynamic Proxies, EJB und vieles andere kaum oder gar nicht möglich. Hoffe das hilft ein wenig weiter...


Wenn's einfach wär', könnt's jeder!

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: