Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 9. diel - Dedičnosť a polymorfizmus

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
David
Člen
Avatar
Odpovedá na Nositelka Změny
David:13.1.2020 22:07

Ahoj, myslím že dceřiná třída je v rámci češtiny naprosto v pořádku. Správně je to asi: base class a derived class, neboli základní a odvozená třída. Často se taky používá parent a child. Nedávno jsem ale četl knížku o css a tam používali velmi často termín dceřiný element, myšleno jako přímý potomek, na rozdíl od obecného potomka, který může být v hierarchii hlouběji.

Na druhou otázku je odpověď ano, pochopila jsi to správně. Privátní membery jsou také zděděni, ale nejsou přístupní. Přes public/internal/pro­tected metody base třídy k ním ale přístup možný je.

Avatar
Odpovedá na David
Nositelka Změny:14.1.2020 21:34

Tak to jsem ráda, že jsem si dceřinou třídu nevymyslela úplně i že to chápu dobře. :-)

Avatar
Jirka Jr
Člen
Avatar
Odpovedá na Nositelka Změny
Jirka Jr:15.1.2020 12:39

a to jsme ještě nezabloudili do traitů :-)

to si ale radši v lidském provedení ani nechci představovat...

možná by tato přirovnání mohla zpětně inspirovat k tvorbě sci-fi

Avatar
David
Člen
Avatar
David:13.4.2020 21:41

Díky za článek. ;-)

Avatar
Martin Riecky:19.8.2020 19:33

Ahojte. Mám dotaz. Podľa čoho zvoliť, či použiť dedičnosť alebo polymorfyzmus? Je na to nejaká metodika (okrem výnimky viacnásobného "dedenia")?
Chcem tým povedať, že v potomkoch sa dokážu metódy prekryť (neviem, či dokonca v rodičovskej triede nevieme definovať abstraktnú metódu, ktorú treba povinné prekryť).
Mám v tom celkom hmlisto.
Ďakujem.

Avatar
Martin Riecky:19.8.2020 19:50

Ešte ma napadá, že ak má trieda veľká metód a premenných, ktoré štandardne nepotrebujeme, vtedy by sa dal použiť polymorfyzmus.

Avatar
Martin Riecky:20.8.2020 17:44

Beriem zatiaľ späť. V podstate som sa pýtal na dedičnosť a interface. Ale snáď sa to dozviem neskôr.

Avatar
barnabas.666
Člen
Avatar
barnabas.666:21.3.2021 19:37

Měl bych drobný dotaz ke kódu zmíněnému v této lekci.

Uzivatel u = new Administrator("Josef Nový", 25);
if (u is Administrator)
    Console.WriteLine("Je to administrátor");
else
    Console.WriteLine("Je to uživatel");

Pomocí operátoru "is" se můžeme zeptat, zda je objekt daného typu. Kód výše otestuje, zda je v proměnné u uživatel nebo jeho potomek administrátor.

Výstup výše zmíněného prográmku je:

Je to administrátor

Pokud udělám v programu drobnou změnu (jen zaměním ten řádek s else):

Uzivatel u = new Administrator("Josef Nový", 25);
if (u is Administrator)
    Console.WriteLine("Je to administrátor");
if (u is Uzivatel)
    Console.WriteLine("Je to uživatel");

Tak je výstup následující:

Je to administrátor
Je to uživatel

Nevím, možná si stojím na vedení, ale mně nepřipadá, že bych pomocí operátoru "is" poznal, zda je v proměnné u uživatel nebo jeho potomek administrátor. Pokud na to u pustím GetType, tak se přizná, že je administrátor, ale s využitím "is" mi přijde odpověď poněkud vyhýbavá.

Avatar
Jiří Pivec
Člen
Avatar
Jiří Pivec:1.11.2021 19:21

Ahoj, na vedení si nestojíš, viz referenční příručku:
https://docs.microsoft.com/…ing-and-cast#…
Operátor is vrací true pokud je instance v dědičném stromu.
Takže v tomto případě:

Uzivatel a = new Administrator();
Console.WriteLine(a is Uzivatel);           //true
Console.WriteLine(a is Administrator);      //true

Uzivatel u = new Uzivatel();
Console.WriteLine(u is Uzivatel);           //true
Console.WriteLine(u is Administrator);      //false

ještě jeden odkaz:
https://stackoverflow.com/…ettype-or-is

Odpovedať
„Kdo se umí smát sám sobě, má právo se smát všemu ostatnímu, co mu k smíchu připadá.“ J.W.
Avatar
Jaroslav Drobek:2.8.2022 19:26

Hodnocení:

  • Potomek se k privátnímu atributu může (nepřímo) dostat/přepsat jej přes vhodnou public metodu.
  • "Pomocí operátoru is se můžeme zeptat, zda je objekt daného typu." - spíše zda objekt vyhovuje rozhraní dané třídy, tj. zda by mohl být její instancí.
Editované
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 47.