interfaces:
http://www.galileocomputing.de/open...el_06_010.htm#Rxx365java06010040001D21F041100
abstrakte Klassen:
http://www.galileocomputing.de/open...el_06_009.htm#Rxx365java06009040001D11F018100
kurzversion:
abstrakte Klassen kommen in Vererbungshierarchien vor. Man kann in einer Klasse normale Methoden und Variablendefinitionen haben, aber auch abstrakte methoden deklarieren, die von den Subklassen implementiert werden müssen
Bsp: Klasse Mensch. Es gibt bekanntermaßen als Unterklassen Mann und Frau. Beide haben vieles gemeinsam, aber auch (zu) vieles unterschiedlich. Also alles gemeinsame in Klasse Mensch packen und ausprogrammieren. Das unterschiedliche als abstrakt deklarieren.
Abstrakt verhindert, dass man eine Instanz der Klasse erstellen kann. Man will nicht eine Instanz Mensch haben, man will Mann oder Frau
Interface dienen zur Beschreibung von gleichen Verhalten bzw Eigenschaften. Sie dürfen keine Variablendefinitionen haben (außer final konstanten) und keine Methodenimplementierungen.
Bsp: Comparable Interface. Einem sortieralgorithmus ist es so was von schnuppe ob er Strings, Zahlen oder komplexe Objekte sortieren soll, solange alle das Comparable Interface implementieren, das garantiert, dass es eine methode gibt (compareTo), die dem sortierer sagt, wie Objekte der klasse zu ordnen sind.
Also ein interface beschreibt ein bestimmtes Verhalten, dass die Klasse erhält