Minule jsme si ukázali, jakým způsob lze v Javě specifikovat podtypy. Tentokrát budeme postupovat opačným směrem – představíme si rozhraní a abstraktní třídy, což jsou konstrukty, které slouží ke generalizaci (zobecnění) tříd.
Stejně jako v minulém dílu si představme, že máme firmu, kde pracují zaměstnanci mnoha různých profesí (ředitele, sekretářky, uklízečky...). Tito zaměstnanci sdíli určité generické chování, které je společné všem profesím, například všichni zdraví na potkání své kolegy.
Zaměstnanci se ale v určitých aspektech liší. Všichni sice pracují (metoda work()), ale každá profese dělá něco trochu jiného.Minule jsme tuto situaci řešili tak, že jsme vytvořili třídu obecného zaměstnance, ze které dědili všichni specifičtí činitelé.
Tentokrát ovšem v naší firmě pracují pouze specifičtí zaměstnanci – to znamená, že neexistuje (nemůže existovat) žádná instance obecné profese. Z tohoto hlediska by bylo velmi nešikovné implementovat metody společné nadtřídy (když stejně nebudou nikdy využity). Zároveň by toto nijak nezamezilo konstrukci onoho obecného zaměstnance, který v naší firmě nemůže pracovat (z definice příkladu).