Folien Schnittstellen

Werbung
Schnittstellen
Gerd Bohlender
Institut für Angewandte und
Numerische Mathematik
Vorlesung: Einstieg in die Informatik mit Java
13.06.07
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
1/7
Übersicht
1
Einführung
2
Eigenschaften
3
Vergleich zu abstrakten Klassen
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
2/7
Einführung
Im Gegensatz zu C++ gibt es in Java keine Mehrfachvererbung, da diese
zu unübersichtlichen und fehleranfälligen Klassenhierarchien führen kann.
Nicht erlaubt ist also
class A extends B, C { ... }
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
3/7
Einführung
Im Gegensatz zu C++ gibt es in Java keine Mehrfachvererbung, da diese
zu unübersichtlichen und fehleranfälligen Klassenhierarchien führen kann.
Nicht erlaubt ist also
class A extends B, C { ... }
Manchmal ist es allerdings sinnvoll, mehrere Basisschnittstellen zu
implementieren. Eine Klasse soll z.B. von der Klasse Applet abgeleitet
sein und zusätzlich die Eigenschaften der Schnittstelle Runnable besitzen.
Dafür gibt es das Konzept der Schnittstellen: Statt class wird hier
interface verwendet.
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
3/7
Einführung
Im Gegensatz zu C++ gibt es in Java keine Mehrfachvererbung, da diese
zu unübersichtlichen und fehleranfälligen Klassenhierarchien führen kann.
Nicht erlaubt ist also
class A extends B, C { ... }
Manchmal ist es allerdings sinnvoll, mehrere Basisschnittstellen zu
implementieren. Eine Klasse soll z.B. von der Klasse Applet abgeleitet
sein und zusätzlich die Eigenschaften der Schnittstelle Runnable besitzen.
Dafür gibt es das Konzept der Schnittstellen: Statt class wird hier
interface verwendet.
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
3/7
Einführung
Syntax
interface Name {
... //nur Konstanten, keine Variablen!
... //nur abstrakte Methoden, keine Implementierung!
}
Schnittstellen können keine Instanzen bilden, Referenzen sind allerdings
erlaubt.
Eine Klasse kann eine oder mehrere Schnittstellen implementieren: Dabei
müssen alle Methoden der Schnittstellen implementiert werden, ansonsten
ist die Klasse abstrakt und muss durch abstract als solche
gekennzeichnet werden.
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
4/7
Einführung
Syntax
interface Name {
... //nur Konstanten, keine Variablen!
... //nur abstrakte Methoden, keine Implementierung!
}
Schnittstellen können keine Instanzen bilden, Referenzen sind allerdings
erlaubt.
Eine Klasse kann eine oder mehrere Schnittstellen implementieren: Dabei
müssen alle Methoden der Schnittstellen implementiert werden, ansonsten
ist die Klasse abstrakt und muss durch abstract als solche
gekennzeichnet werden.
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
4/7
Eigenschaften
Syntax
class D extends Superklasse implements I1, I2 { ... }
Achtung
Ähnlich wie Klassen können Schnittstellen eine Vererbungshierarchie
bilden. Dabei ist Mehrfachvererbung erlaubt!
interface Inter extends I1, I2, I3 {
... // weitere Konstanten, Methoden-Deklarationen
}
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
5/7
Eigenschaften
Syntax
class D extends Superklasse implements I1, I2 { ... }
Achtung
Ähnlich wie Klassen können Schnittstellen eine Vererbungshierarchie
bilden. Dabei ist Mehrfachvererbung erlaubt!
interface Inter extends I1, I2, I3 {
... // weitere Konstanten, Methoden-Deklarationen
}
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
5/7
Eigenschaften
Alle Methoden einer Schnittstelle sind public abstract. Dies
braucht nicht explizit angegeben zu werden. Widersprüchliche
Angaben wie z.B. final oder private sind verboten.
Alle Datenfelder einer Schnittstelle sind public static final. Dies
braucht ebenfalls nicht explizit angegeben zu werden. Angaben wie
z.B. private oder protected sind verboten.
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
6/7
Eigenschaften
Alle Methoden einer Schnittstelle sind public abstract. Dies
braucht nicht explizit angegeben zu werden. Widersprüchliche
Angaben wie z.B. final oder private sind verboten.
Alle Datenfelder einer Schnittstelle sind public static final. Dies
braucht ebenfalls nicht explizit angegeben zu werden. Angaben wie
z.B. private oder protected sind verboten.
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
6/7
Vergleich zu abstrakten Klassen
Schnittstelle
abstrakte Klasse
alle Methoden implizit abstrakt
Mischung abstrakte/implementierte
Methoden erlaubt
Variablen, Konstanten, usw. erlaubt
Einfachvererbung
Instanziierbare Klasse muss alle
abstrakten Methoden
überschreiben.
nur Konstanten erlaubt
Mehrfachimplementierung
Instanziierbare Klasse muss alle
Methoden des Interfaces
implementieren.
G. Bohlender (IANM – UNI Karlsruhe)
Schnittstellen
13.06.07
7/7
Herunterladen