Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 7. 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
Avatar
Libor Šimo (libcosenior):10.9.2013 10:37

Veľmi pekne a jednoducho vysvetlené.

Odpovedať
10.9.2013 10:37
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
dez1nd
Člen
Avatar
dez1nd:13.11.2013 14:24

nadhera, proc jsem nikdy nemel takoveho ucitele na programovani ? kdzy jsem ve skole tak me to silene nudi pac nevim co po me chce ale pri cteni tohoto navodu a psani kodu je to opravdu lehke se ucit.. dekujeme8-)

 
Odpovedať
13.11.2013 14:24
Avatar
KubaP
Člen
Avatar
KubaP:3.2.2014 13:57

Paráda! Srozumitelné, zábavné. Díky, jdu na mága.

 
Odpovedať
3.2.2014 13:57
Avatar
gizzycz
Člen
Avatar
gizzycz:8.6.2014 0:13

Zdarec, snažím se tady zprovoznit přiložený kód :

Uzivatel u = new Uzivatel("Jan Novák", 33);
Administrator a = new Administrator("Jo­sef Nový", 25);
// Nyní do uživatele uložíme administrátora:
u = a;
// Vše je v pořádku, protože uživatel je předek
// Zkusíme to opačně a dostaneme chybu:
a = u;

a to pomocí kódu:

class Uzivatel
{
public Uzivatel(string jmeno, int vek)
{ }
}
class Administrator: Uzivatel
{
private string telefonniCislo;
public Administrator(string jmeno, int vek)
{ }
}
static void Main(string[] args)
{
Uzivatel u = new Uzivatel("Jan Novák", 33);
Administrator a = new Administrator("Jo­sef Nový", 25);
u = a;
}

Hlasi mi to:'ConsoleAp­plication3.Uzi­vatel' does not contain a constructor that takes 0 arguments

Diky za jakoukoliv radu

Editované 8.6.2014 0:14
 
Odpovedať
8.6.2014 0:13
Avatar
Ori I
Člen
Avatar
Odpovedá na gizzycz
Ori I:8.6.2014 1:04

niesom C# specialista ale pokial rozsirujes administratorom toho uzivatela tak mu vlastne (uzivatelovi) nepridavas ziaden parameter, cize si to hlada constructor bez argumentov. A ty ten constructor nemas definoveny

toto by malo fungovat(neskusal som to spustat ani nic, je to len od oka po par pivach napisane :D )

class Uzivatel
{
public Uzivatel()
{ }
public Uzivatel(string jmeno, int vek)
{ }
}
class Administrator: Uzivatel
{
private string telefonniCislo;
public Administrator(string jmeno, int vek)
{ }
}
static void Main(string[] args)
{
Uzivatel u = new Uzivatel("Jan Novák", 33);
Administrator a = new Administrator("Josef Nový", 25);
u = a;
}

snad som pomohol

 
Odpovedať
8.6.2014 1:04
Avatar
kopecj
Člen
Avatar
kopecj:28.5.2015 16:19

Docela krásně vysvětleno, konečně jsem pochopil:)

 
Odpovedať
28.5.2015 16:19
Avatar
MS84
Člen
Avatar
MS84:10.6.2015 11:32

Dobrý den, mám ten samý problém jako gizzycz. Vytvořil jsem si třídu fotograf s následujícím konstruktorem:

public fotograf(string jmeno, string pristroj, int pocetPristroju, int vek)

Poté si vytvořím třídu velky_fotograf, která je potomkem:
class velky_fotograf: fotograf
{}

Z této třídy ale nemohu vytvořil objekt. C# hlásí následující chybu:

velky_fotograf does not contain constructor, that takes 4 adguments (CS1729)

 
Odpovedať
10.6.2015 11:32
Avatar
Odpovedá na MS84
Michal Štěpánek:10.6.2015 12:14

Musíš mít v té své poděděné třídě konstruktor se čtyřmi parametry.

Odpovedať
10.6.2015 12:14
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
MS84
Člen
Avatar
MS84:10.6.2015 12:27

Adhoj,jj hlášce samozřejmě rozumím. Nerozumím ale tomu, proč si třída, která je potomkem automaticky nepřebírá konstruktor, pokud není definován nový

 
Odpovedať
10.6.2015 12:27
Avatar
Odpovedá na MS84
Michal Šmahel:10.6.2015 21:14

Protože se volá po deklaraci či zavolání třidy (při spuštění), mnohdy ji i řídí (spustí řadu metod) a zadávají se pomocí něho proměnné celé třídě.
Potomek není shodný (kdyby byl, nebyl by třeba), proto je to nastaveno odděleně. Když potřebuješ stejný, napíšeš potomkovi stejný.

Odpovedať
10.6.2015 21:14
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
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.

Zatiaľ nikto nevložil komentár - buď prvý!