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