Implementiert eine Klasse eine bestimmte Schnittstelle nicht, so kann sich auch nicht am dynamischen Binden über diese Schnittstelle teilnehmen, auch wenn sie eine Methoden hat, über die eine Schnittstelle abstrahiert. Besitzt zum Beispiel die nicht-finale Klasse FIFA eine öffentliche Methode price(), implementiert aber Buyable mit einer gleich benannten Methoden nicht, so lässt sich zu einem Trick greifen, sodass eine Implementierung geschaffen wird, die die existierende Methode aus der Klasse und die der Schnittstelle in die Typhierarchie bringt.
class FIFA {
public double price() { … }
}
interface Buyable { double price(); }
class FIFAisBuyable extends FIFA implements Buyable { }
Eine neue Unterklasse FIFAisBuyable erbt von der Klasse FIFA und implementiert die Schnittstelle Buyable, sodass der Compiler die existierende price()-Methode mit Vorgabe der Schnittstelle vereinigt. Nun lässt sich FIFAisBuyable als Buyable nutzen und dahinter steckt die Implementierung von FIFA. Als Unterklasse bleiben auch alle sichtbaren Eigenschaften der Oberklasse erhalten.
Ähnliche Beiträge
- Default-Methoden aus speziellen Oberschnittstellen ansprechen
- Klassenimplementierung geht vor Default-Methoden
- Statische ausprogrammierte Methoden in Schnittstellen
- Abstrakte überschriebe Schnittellenoperationen nehmen Default-Methoden weg
- Default-Methoden, Teil 1, Update mit aktueller Java 8 Syntax