Dedičnosť je centrálne koncepciu v objektovo orientovanom programovaní (OOP) a často sa považuje za jeden zo základných kameňov pre zvýšenie efektivity. V tomto tutoriále si prehlbuješ svoje porozumenie dedičnosti v Jave. Naučíš sa, ako pracovať so modifikátormi prístupu, používať konštruktory a akú úlohu zohráva zapuzdrenie v dedičnosti.

Najdôležitejšie zistenia

  • Dedičnosť umožňuje dedenie vlastností a metód triedy.
  • Modifikátor prístupu private obmedzuje prístup k premenným alebo metódam, zatiaľ čo protected umožňuje rozšírený prístup v rámci tried, ktoré dedí od pôvodnej triedy.
  • Je potrebné volať konštruktory v podtriede, aby sa objekty správne inicializovali.
  • Metódy rozhrania je možné generalizovať pri viacerých špecifických triedach.

Krok za krokom návod

Modifikátory prístupu: protected vs. private

Ak v triede ako Vozidlo deklaruješ premennú (napr. Farba) ako protected, môžeš túto premennú v odvodenej triede (napr. Auto) priamo použiť. Ak však deklaruješ premennú ako private, nemôžeš na ňu v podtriede priamo pristupovať.

Dedičstvo v Jave - Základy a príklady

To znamená konkrétne, že prístup k private premenným je možný iba cez setter a getter.

Príklad ukazuje, že musíme použiť setFarbe a getFarbe, aby sme získali prístup k private premennej farba.

Dedičnosť v Jave - základy a príklady

Ak je premenná deklarovaná ako protected, môžeš k nej jednoducho pristupovať a meniť hodnotu v rámci triedy Auto.

Používanie konštruktorov v dedičnosti

Pri definovaní podtriedy sa musíš uistiť, že konštruktor nadtriedy je správne zavolaný.

Dedičstvo v Jave - základy a príklady

To zabezpečuje, že farba je správne inicializovaná pri vytváraní objektu Auto.

Dedičnosť v Jave - Základy a príklady

Dbaj na to, aby si v podtriede definoval konštruktor, ktorý primerane predá parametre nadtriedy.

Dedičnosť a volanie metód

Dve triedy, Vozidlo a Auto, ti umožňujú používať spoločné premenne a metódy. Ak definuješ metódu vo Vozidle, môžeš túto metódu použiť aj v Aute bez toho, aby si ju musel znovu písať.

Dedičnosť v Jave - základy a príklady

Tu sa volá metóda fahrzeugFarbeAusgeben a vypisuje farbu, ktorú poskytuje metóda getFarbe.

Obmedzenia pri prístupe k metódam

Ak sa pokúsiš zavolať metódu v podtriede, ktorá nie je dostupná pre triedu, dostaneš chybu kompilácie. V našom príklade je potrebné odovzdať objekt Vozidla, aby si mohol zavolať metódu getFarbe.

Dedičstvo v Jave - Základy a príklady

To prakticky znamená, že sa musíš uistiť, že metóda zodpovedá tvojmu typu dát predtým, než ju zavoláš. Môžeš teda odovzdať bicykel, auto alebo oboje metóde, ktorá očakáva iba objekty Vozidla.

Príklad volania inštančných metód v statických kontextoch

Maj na pamäti, že v statických metódach (static) sa nemôže používať kľúčové slovo this, pretože sa nevzťahuje na konkrétnu inštanciu. V takýchto prípadoch by si mohol zvážiť použitie inej metódy alebo preusporiadanie logiky.

Dedičstvo v Jave - Základy a príklady

Táto výzva správne vypisuje farbu pre objekt meinAuto.

Zhrnutie - Dedičnosť v Jave: Sprievodca pre začiatočníkov

Dedičnosť je dôležitý koncept v programovaní v Jave, ktorý ti pomáha modularizovať a znovu používať kód. V tomto tutoriále si sa oboznámil s základmi modifikátorov prístupu, konštruktorov a volaní metód v súvislosti s dedičnosťou.

Často kladené otázky

Ako môžem pristupovať k private premenným v podtriede?K private premennej v podtriede nie je možné pristupovať priamo. Použi Getter a Setter metódy.

Aký je rozdiel medzi protected a private?protected umožňuje prístup v podtriede a v rovnakom balíku, zatiaľ čo private je prístupný len vo vnútri vlastnej triedy.

Musím definovať konštruktory v podtriede?Áno, ak si upravil konštruktor nadtriedy, musíš tiež zodpovedajúcim spôsobom definovať konštruktory v podtriede.

Môžem voľne prepisovať metódy z nadtried v podtriedach?Áno, metódy, ktoré nie sú označené ako final alebo static, môžeš v podtrúde prepisovať, aby si implementoval špecifické správanie.