Folien zu Schnittstellen

Werbung
Einstieg in die Informatik mit Java
Schnittstellen
Gerd Bohlender
Institut für Angewandte und Numerische Mathematik
1 / 13
Gliederung
1 Einführung
2 Definition einer Schnittstelle
3 Implementierung einer Schnittstelle
4 Vergleich zu abstrakten Klassen
2 / 13
Gliederung
1 Einführung
2 Definition einer Schnittstelle
3 Implementierung einer Schnittstelle
4 Vergleich zu abstrakten Klassen
3 / 13
Einführung
In Java gibt es keine Mehrfachvererbung, da diese zu
unübersichtlichen und fehleranfälligen Klassenhierarchien
führen kann.
Achtung
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.
4 / 13
Gliederung
1 Einführung
2 Definition einer Schnittstelle
3 Implementierung einer Schnittstelle
4 Vergleich zu abstrakten Klassen
5 / 13
Definition einer Schnittstelle
Syntax
i n t e r f a c e Name {
. . . / / nur Konstanten , k e i n e V a r i a b l e n !
. . . / / nur a b s t r a k t e Methoden , k e i n e Implementierung !
}
Syntax abstrakte Methode
Modifizierer Ergebnistyp Methodenname (formale Argumentliste);
• Abstrakte Methoden deklarieren nur die Methode.
• Sie besitzen keinen Anweisungsteil.
• Die Definition der Methoden muss später bei der
Implementierung der Schnittstelle erfolgen.
• Eine Schnittstelle stellt einen Kontrakt dar, der von der
Implementierung erfüllt werden muss.
6 / 13
Eigenschaften von Schnittstellen
• Schnittstellen können keine Instanzen bilden,
• Referenzen sind allerdings erlaubt.
Beispiel
interface Funktion {
double auswerten ( double x ) ;
}
Beispiel
Verwendung in einer Methode:
void ausgeben ( F u n k t i o n f , double x ) {
System . o u t . p r i n t l n ( f . auswerten ( x ) ) ;
}
7 / 13
Gliederung
1 Einführung
2 Definition einer Schnittstelle
3 Implementierung einer Schnittstelle
4 Vergleich zu abstrakten Klassen
8 / 13
Implementierung einer Schnittstelle
• 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.
Syntax
class D extends Superklasse implements I1 , I 2 { . . . }
Achtung
Ähnlich wie Klassen können Schnittstellen eine
Vererbungshierarchie bilden. Dabei ist Mehrfachvererbung erlaubt!
i n t e r f a c e I n t e r extends I1 , I2 , I 3 {
. . . / / w e i t e r e Konstanten , Methoden−D e k l a r a t i o n e n
}
9 / 13
Beispiel Funktion, Fortsetzung
Beispiel
class Xhoch3 implements F u n k t i o n {
public double auswerten ( double x ) {
r e t u r n x ∗x ∗x ;
}
}
Beispiel
Verwendung in main:
Funktion f ;
/ / nur Referenz
/ / I n s t a n z e i n e r Implementierung der S c h n i t t s t e l l e b i l d e n
f = new Xhoch3 ( ) ; / / Typen werden angepasst
double d i f f e r e n z = f . auswerten ( 2 ) − f . auswerten ( 1 ) ;
ausgeben ( f , 5 ) ;
//
10 / 13
Eigenschaften
• Alle Methoden einer Schnittstelle sind public abstract.
Dies braucht nicht explizit angegeben zu werden.
• Widersprüchliche Angaben wie z.B. final, protected
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.
11 / 13
Gliederung
1 Einführung
2 Definition einer Schnittstelle
3 Implementierung einer Schnittstelle
4 Vergleich zu abstrakten Klassen
12 / 13
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.
13 / 13
Herunterladen