homedukeOOP mit Java: Schnittstellen und Mehrfachvererbung in Java Prof. Dr. Uwe Schmidt FH Wedel

Schnittstellen und Mehrfachvererbung in Java

weiter

weiter

Schnittstellen in Java

Mehrfachvererbung
ist in Java für (abstrakte) Klassen nicht möglich.
aber
Mehrfachvererbung mit Schnittstellen ist erlaubt.
weiter
?
Software-technischen Probleme und Konsequenzen?
Beispiel
für Gleichheitstest und Ordnung
hier der Einfachheit halber ohne Nutzung von Generics
weiter
Equality
die Schnittstelle
 
public
interface Equality {
 
  boolean isEqual(Object o2);
 
  boolean isNotEqual(Object o2);
}
weiter
Ordering
die Schnittstelle erweitert Equality
 
public
interface Ordering
  extends Equality {
 
  boolean isGreater(Object o2);
 
  boolean isGreaterOrEqual(Object o2);
 
  boolean isLessThan(Object o2);
 
  boolean isLessOrEqual(Object o2);
}
 
weiter
Anwendung
alle Methoden aus der Ordering Schnittstelle müssen neu implementiert werden.
 
public
class OrderExample
  implements Ordering {
 
  public
  boolean isEqual(Object o2) {
    // ...
  }
 
  public
  boolean isNotEqual(Object o2) {
    // ...
  }
 
  // ... die restlichen 4 Methoden
}
weiter
merke
Gefahr der Codeverdopplung
weiter
merke
In einer Schnittstelle dürfen nur Methoden deklariert werden, sie dürfen aber nicht definiert werden.
Also nur Methodenköpfe, keine Methodenrümpfe.
weiter
Beispiel mit Generics
weiter
vollständiges Beispiel für Ordnungsfunktionen als Schnittstelle und abstrakte Klasse
weiter
vollständiges Beispiel für Schnittstellen und/oder abstrakte Klassen
weiter
Eine Schnittstelle für totale Ordnungen ist in Java ab 1.5 mit Hilfe von Generics definiert.
 
public
interface Comparable<T> {
  int compareTo(T o);
}
schlecht
Für Gleichheitstest gibt es dieses leider nicht (Abwärtskompatibilität).
merke
Gleichheitstest in Java mit equals aus Object

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel