2.5. Rozhraní, abstraktní třída

Zjistíme, že programátor umí psát na počítači a účetní také. Intuitivně cítíme, že nebudou mít mnoho dalších společných schopností a navíc tuto dovednost může mít napříč povoláními leckdo, proto nemá smysl tvořit třídu na způsob ČlovekPracujícíSPočítačem a od ní dědit Programátora a Účetní, ale je výhodnější například vytvořit rozhraní SchopenPsátNaPočítači s metodou napišNaPočítači a upravit třídy Programátor a Účetní tak, aby toto rozhraní implementovaly. V definici rozhraní zpravidla nemůže být obsažen kód (implementaci) dané metody, ale všechny třídy, které toto rozhraní implementují, musí být schopny se nějak vypořádat s příkazem napišNaPočítači.

Abstraktní třída je třída, o které nejde trořit instance, pouze od ní mohou ostatní třídy dědit. Umožňuje seskupení společných vlastností objektů (tím zabraňuje opakované implementaci). Ve zděděných třídách se implementují jen rozdílné vlastnosti (metody) tříd. (Viz.)