Dědičnost (abstraktní třídy, rozhraní, kolekce objektů příbuzných tříd, polymorfismus)
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
PAD Programování a databáze
Téma 14
Školní rok 2017/2018
1/2
Jan Švábík, V4D
Dědičnost (abstraktní třídy, rozhraní, kolekce
objektů příbuzných tříd, polymorfismus)
Dědičnost
Dědičnost je vztah mezi objekty v OOP. Kde jsou objekty definované třídami, mohou třídy zdědit
vlastnosti a metody od předem existujících tříd. Ty se obvykle nazývají rodičovské třídy. Výsledné
třídy jsou pak nazývány jako třídy odvozené, podtřídy nebo potomci třídy. Koncept dědičnosti byl
poprvé zaveden pro jazyk Simula v roce 1968.
Abstraktní třídy
Abstraktní třída je třída, která nemá definované některé metody. Předpokládá se, že z ní nějaká
jiná třída bude dědit a tyto metody si doplní podle své potřeby. Obvykle již disponuje nějakými
instantními proměnnými. Abstraktní třída také může obsahovat konkrétní metody. Všechny
metody tedy nemusejí nutně mít definován algoritmus své činnosti. Potomek abstraktní třídy
nemůže však dědit od nějaké další třídy (může dědit pouze od jedné).
Abstraktní by mohla být například třída DopravniProstredek například s proměnnými spotreba,
objemNadrze
či SPZ a metodami jet(), natankovat() či vylozitNaklad(). Každá třída, která by
představovala nějaký dopravní prostředek, by pak dědila z třídy DopravniProstredek vlastnosti
a metody, které by byly případně upraveny pro potřeby daného potomka (např. Auto by vykládalo
náklad jinak než třeba Náklaďák).
Rozhraní
Rozhraní (interface) je na rozdíl od abstraktní třídy jakýsi seznam metod, které by měla nějaká
třída podporovat, aby plnila nějaký účel. Hlásí-li se třída k tomu, že podporuje nějaký interface,
musí definovat všechny metody, které interface předepisuje. Interface definuje pouze hlavičky
metod, implementovat je musí třída samotná.