I když Java disponuje rozhraními, někdy je vhodné určitou specifikaci implementovat pouzečástečně:
Rozhraní = Specifikace
Abstraktní třída = Částečná implementace
Třída = Implementace