NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 – Lekce 15 - Rozhraní (interface)

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Milan
Michal Šmahel:4.7.2018 20:56

Potom ti pomůže abstraktní třída.

Odpovědět
4.7.2018 20:56
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Michael K.
Člen
Avatar
Michael K.:2.5.2019 10:55

Jedna věc mi není ohledně Interface jasná.

Jaký je rozdíl mezi
IPtak ptak = new Ptak(); a Ptak ptak = new Ptak();

přeci pokud implementuji rozhraní IPtak ve tříde Ptak, tak tam implementovány metody budou.

Nebo jo to ochrana před tím, kdyby třída Ptak rozhraní IPtak neimplementovalo ?

Polopaticky řečeno - tím, že napíšu IPtak ptak = new Ptak(); kompilátoru řeknu, ověř mi, zda třída Ptak implementuje rohzraní IPtak ? Chápu to dobře ?

Jak by to bylo v případě, že bych chtěl zajistit, aby třída Ptak implementovala více rozhraní ? Při vytváření instance si musím vybrat pouze jednu ?

Děkuji

 
Odpovědět
2.5.2019 10:55
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Michael K.
David Jančík:2.5.2019 11:30

Tvůj dotaz je v článku zodpovězen:

K čemu je to dobré? Výhod a využití je více, na první jsme již přišli. Pomocí rozhraní dokážeme zjednodušit rozhraní nějakého složitého objektu a vystavit jen tu část, která se nám v tu dobu hodí.

Odpovědět
2.5.2019 11:30
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Michael K.
Člen
Avatar
Michael K.:2.5.2019 11:36

Takže pokud by třída Ptak implementovala další rozhraní (například.:

interface IPridejDoDatabaze { public void PridaniDoDatabaze();}

a já vytvořím instanci IPtak ptak = new Ptak(); tak metodu PirdaniDoDatabaze() neuvidím/nemohu ji použít ? Chápu to dobře?

Editováno 2.5.2019 11:37
 
Odpovědět
2.5.2019 11:36
Avatar
vosa53
Člen
Avatar
Odpovídá na Michael K.
vosa53:2.5.2019 14:12

Ano, pokud ji nepřetypuješ.

IPtak ptak1 = new Ptak();
ptak1.PridaniDoDatabaze(); // Compile time error

Ptak ptak2 = (Ptak)ptak1;
ptak2.PridaniDoDatabaze(); // Lze

IPridejDoDatabaze ptak3 = (IPridejDoDatabaze)ptak1;
ptak3.PridaniDoDatabaze(); // Lze
 
Odpovědět
2.5.2019 14:12
Avatar
David
Člen
Avatar
David:18.4.2020 17:08

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

 
Odpovědět
18.4.2020 17:08
Avatar
Daniel Kundrák:16.8.2020 18:49

Super článek

Odpovědět
16.8.2020 18:49
Život je skvělý, musíš ho jen pochopit.
Avatar
Vašek Doškář:29.6.2021 8:26

Super článek :)

Interface je v principu velmi jednoduchý, jen se ho většina lidí vidí zbytečně složitě (jako ukazatel v C++). Implementací rozhraní dáte třídě jen hlavičky metod, aby se např. 4 třídy mohly ovládat stejnými metodami. Tím, že si tělo metody pak člověk musí doimplementovat je logické, každá třída může mít různé atributy, které by nemuselo rozhraní obsahovat.

 
Odpovědět
29.6.2021 8:26
Avatar
Werner Yuyong:3.5.2022 14:45

Ahoj,
díky za článek.

Jen doplním screenshoty.
Ve verzi VS 17.1.6 se to automatické doimplementovani skrývá pod"
"Quick actions and refactorings..." 'Ctrl+.'

 
Odpovědět
3.5.2022 14:45
Avatar
Lukas Zacharias:18.6.2022 15:00

Ve Visuál Studiu se implementace provádí přes tlačítko Quick Action , ne jak je v lekci ukázané.

Odpovědět
18.6.2022 15:00
Chybami se člověk učí.
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 10 zpráv z 74.