<< Polymorfizmus | Obsah | Abstraktné metódy >>
Abstraktné triedy úzko súvisia s dedičnosťou a polymorfizmom. V minulej prednáške sme vytvorili hierarchiu tried v ktorej od triedy Film
dedili triedy FilmNaDvd
, FilmNaPaske
a FilmVPocitaci
. Povedali sme si, že dokážeme z premennej triedy Film
referencovať objekty tried Film
, FilmNaDvd
, FilmNaPaske
alebo FilmVPocitaci
. Reálne sme však objekty triedy Film
nevytvárali. Ak by sme chceli zabrániť tomu, aby sme nemohli vytvárať objekty triedy Film
mohli by sme túto triedu zmeniť na abstraktnú. Zmena triedy na abstraktnú spočíva v pridaní slovíčka abstract
pred definíciu triedy:
Touto jednoduchou zmenou sa nám funkcionalita nášho programu nijako nezmenila. Naďalej môžeme mať premenné typu Film
a môžeme z nej referencovať objekty tried FilmNaDvd
, FilmNaPaske
a FilmVPocitaci
. Ak by sme však chceli vytvoriť nový objekt triedy Film
nepovolilo by nám to:
Ak chceme, aby každý film mal svoje médium, na ktorom je uložený, tak zmenou triedy Film
na abstraktnú si môžeme zabezpečiť, že Java nás upozorní, keď na takéto pravidlo zabudneme.
Iný príklad by mohol byť, že by sme mali triedu Clovek
, od nej oddedené triedy Muz
a Zena
a chceli by ste mať pole ľudí, ale každý by musel byť buď muž alebo žena. Človek je totiž v takomto kontexte abstraktný a nemá zmysel mať človeka, ktorý by nebol ani muž ani žena.