Es steckt viel mehr hinter abstrakten Klassen als Standard-Methodenimplementierungen (wie privater Zustand), aber seit Java 8 sollte man sich immer für die Verteidiger (auch bekannt als default
) Methode im Interface entscheiden, wenn man die Wahl hat.
Die Einschränkung der Standardmethode besteht darin, dass sie nur in Form von Aufrufen anderer Interface-Methoden implementiert werden kann, ohne Bezug auf den Zustand einer bestimmten Implementierung. Das Hauptanwendungsbeispiel sind also Methoden auf höherer Ebene und Komfortfunktionen.
Das Gute an diesem neuen Feature ist, dass man nun, anstatt eine abstrakte Klasse für die Komfortmethoden verwenden zu müssen, was den Implementierer auf eine einzige Vererbung beschränkt, ein wirklich sauberes Design nur mit dem Interface haben kann und ein Minimum an Implementierungsaufwand vom Programmierer gefordert wird.
Die ursprüngliche Motivation für die Einführung von default
Methoden in Java 8 war der Wunsch, die Schnittstellen des Collections-Frameworks um lambda-orientierte Methoden zu erweitern, ohne vorhandene Implementierungen zu beeinträchtigen. Obwohl dies eher für die Autoren von öffentlichen Bibliotheken relevant ist, könnten Sie diese Funktion auch in Ihrem Projekt nützlich finden. Sie haben einen zentralen Ort, um neue Komfortfunktionen hinzuzufügen, und müssen sich nicht auf das Aussehen des Rests der Typenhierarchie verlassen.