11.2 Test - Abstraktné triedy (11.1)

Over si svoje vedomosti z kapitoly o abstraktných triedach. Klikni na Áno alebo Nie - tlačidlo sa hneď zafarbí (zelená = správne, červená = nesprávne) a zobrazí sa komentár s vysvetlením. Otázky prechádzaš po jednej pomocou tlačidiel nižšie.

Otázka 1 / 11

Abstraktnú triedu (abstract class) môžeme priamo instanciovať pomocou Shape().

Nie. Abstraktná trieda nemôže byť priamo instanciovaná - slúži len ako základ pre iné (konkrétne) triedy.

Abstraktná funkcia (napr. abstract fun area(): Double) nemá telo a musí byť implementovaná v podtriede.

Áno. Každá konkrétna podtrieda musí pomocou override doplniť telo pre všetky abstraktné funkcie.

Abstraktná trieda môže popri abstraktných funkciách obsahovať aj bežné (implementované) funkcie.

Áno. Napríklad funkcia describe() môže mať plnú implementáciu a interne volať abstraktné funkcie ako area().

Na rozdiel od rozhrania, abstraktná trieda môže mať vlastný konštruktor.

Áno. Napríklad abstract class Vehicle(val speed: Int) má konštruktor s atribútom speed.

Trieda môže dediť z viacerých abstraktných tried naraz, podobne ako implementovať viacero rozhraní.

Nie. V Kotline môžeme dediť len z jednej triedy (aj abstraktnej), ale implementovať viacero rozhraní.

Abstraktnú triedu použijeme vtedy, keď chceme medzi podtriedami zdieľať spoločný kód (atribúty alebo implementácie funkcií).

Áno. Rozhranie je vhodnejšie vtedy, keď potrebujeme len definovať spoločné správanie bez zdieľaného stavu.

Abstraktná trieda musí obsahovať aspoň jednu neabstraktnú (implementovanú) funkciu.

Nie. Abstraktná trieda môže obsahovať výhradne abstraktné funkcie - žiadna neimplementovaná funkcia nie je povinná.

Konkrétna (neabstraktná) podtrieda musí implementovať všetky abstraktné funkcie svojej rodičovskej abstraktnej triedy.

Áno. Ak by niektorú abstraktnú funkciu neimplementovala, musela by byť sama tiež označená ako abstract.

Triedy Rectangle a Circle dediace z abstraktnej triedy Shape môžu mať odlišnú implementáciu funkcie area().

Áno. Práve v tom je sila abstraktných tried - každá podtrieda si implementuje abstraktné funkcie po svojom.

Rozhranie je vhodnejšie ako abstraktná trieda vtedy, keď potrebujeme, aby všetky podtriedy zdieľali rovnaký konštruktor s atribútmi.

Nie. Rozhranie nemôže mať konštruktor ani atribúty s vlastným stavom - na to je určená práve abstraktná trieda.

Funkcia definovaná v abstraktnej triede bez kľúčového slova abstract musí mať vlastné telo (implementáciu).

Áno. Len funkcie explicitne označené abstract môžu zostať bez implementácie.

Tvoje skóre je 0 / 11