Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: C# Rozhraní a vícenásobná dedičnost

Aktivity
Avatar
Jan Kotěhulka:17.3.2017 0:55

Zdravím,
mám tu takový problém ohledně pochopení rozhraní.
Jelikož jsem rád, když vím jak věci fungují, tak pořád nemůžu přijít na to, kdy a proč používat rozhraní.

Jde mi například o to, že když mám vytvořené rozhraní které obsahuje předpis - void Pozdrav(); a poté ho implementuju nějaké třídě a dopíšu tu danou metodu, tak je momentálně jedno, jestli dané rozhraní implementuju nebo ne, stejně musím danou metodu dopsat.

Zkusil jsem to brat i z druhe stranky. Kdyz potrebuji udelat kopii objektu tak si implementuju rozhrani ICloneable, ale stejne telo metody si musim dopsat sam, tak tedy proc? To same IEquatable<T> atd..

Tak stejne muzu mluvit o vicenasobne dedicnosti. Kdyz dedim tak predavam metody a vlastnosti tridy tridě druhe.
Ovsem kdyz implementuju vice rozhrani tak predevam jen "podminku" na to, ze musi byt definovane tyto metody.

(Než se budete ptát, jestli jsem se díval na googlu a po jiných materiálech tak ano. Mám přečtený článek o rozhraní + komentáře pod článkem, i nějaké videa, ale nic mic mi to nedalo)

Nejlepsi by byl asi vystizny priklad, kde se opravdu vyuzije rozhrani (tzn. kde se vyuziva).

Diky moc za odpoved :)

 
Odpovědět
17.3.2017 0:55
Avatar
Odpovídá na Jan Kotěhulka
Marian Benčat:17.3.2017 8:35

Rozhraní ber jako předpis. Contract. Říkáš tim, co musí splňovat určitý objekt, aby si s ním mohl pracovat. Je to tedy Abstrakce. Povíš, že objekt musí jít klonovat - musí mít určité metody atd. Tedy tím povíš, že jsi schopný pracovat s jakýmkoliv objektem a s instancí jakékoliv třídy, která implementuje rozhraní - tedy i té, která vznikne v budoucnu.

Není to tedy k vícenásobné dědičnosti. Vícenásobná dědičnost v těchto jazycích není, protože přinášela více strastí, než-li užitku (třeba C++). Místo toho se používá kompozice třeba. (né že by to bylo bezproblémové).

Interface tedy není k vícenásobné dědičnosti ve smyslu "zdědění" logiky z více tříd. Interface je k jakési "anotaci", že ta třída něco splňuje.

Používá se tedy k abstrakci.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
17.3.2017 8:35
Totalitní admini..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.