P2: Polymorfizmus a objektovo-orientovaná modularizácia
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Prednáška nadväzuje na predchádzajúcu tému polymorfizmu a rozvíja ju na príklade tried Ogre a Knight, kde metóda attack je prekonaná (override) v odvodenej triede BraveKnight. Vysvetľuje sa rozdiel medzi statickým typom premennej a dynamickým typom skutočného objektu – kompilátor kontroluje dostupnosť metód podľa deklarovaného typu, aj keď reálny objekt danú metódu obsahuje. Demonštruje sa použitie explicitného pretypovania (casting) na sprístupnenie metódy špecifickej pre podtyp a riziko chyby ClassCastException pri nesprávnom pretypovaní. Zdôrazňuje sa, že prekonávanie metód je dynamická záležitosť viazaná na beh programu, zatiaľ čo typová kontrola je statická a prebieha pri preklade. Súčasťou je aj odporúčanie, ako pristupovať k chybovým hláškam a vyhľadávaniu riešení (Google, opatrne aj AI nástroje) namiesto ich kopírovania bez pochopenia.
- - Rozšírenie príkladu o triedy Ogre/BadOgre a Knight/BraveKnight demonštruje prekonávanie metód (override).
- - Prekonaná metóda musí mať rovnaký názov, argumenty aj návratový typ ako pôvodná.
- - Kompilátor kontroluje dostupnosť metód podľa statického (deklarovaného) typu premennej, nie podľa skutočného objektu.
- - Explicitné pretypovanie (casting) umožňuje volať metódu špecifickú pre podtyp, ale hrozí ClassCastException pri nesprávnom type.
- - Výber konkrétnej prekonanej metódy počas behu programu je dynamický proces, typová kontrola je statická (pri kompilácii).
- - Chybové hlášky netreba ignorovať ani sa ich báť – dôležité je čítať zrozumiteľnú časť textu a vyhľadať riešenie.
- - Odporúča sa opatrnosť pri kopírovaní kódu z AI nástrojov bez pochopenia jeho pôvodu a správnosti.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky