Zdravím vespolek,
potřeboval (chtěl) bych pomoct. V knize o C# jsem se po dlouhé době dostal k dědičnosti (která je mi zatím docela jasná), ale narazil jsem na pojem rozhraní. Bohužel jsem absolutně nepochopil, k čemu rozhraní slouží. Kniha říká: rozhraní dovoluje oddělit pojmy "co to je" od "jak se to chová." To mě zmátlo úplně. Je tam dále příklad...
Interface IToken
{
string Nazev();
}
class Token : IToken
{
string IToken.Nazev()
{
...
}
}
Jaký to má význam? Proč se nemůžeme na interface vykváknout a do těla Token napsat novou metodu s názvem "Nazev"? Mohl bych poprosit o vysvětlení tohoto termínu a použitelnosti? Popř. aspoň odkaz na nějaké zdroje...
Mnohokrát děkuji za trpělivost a ochotu pomoct.
Fórum › .NET
Rozhraní
Uvedu jeden příklad z mnoha, kdy jsou rozhraní užitečná. Předem se omlouvám, jestli je v kódu nějaká chybička, psal jsem to jen tak, jak mě to napadalo.
interface IDopravniProstredek
{
int Rychlost;
void JedDopredu();
}
class Kolo : IDopravniProstredek
{
int Rychlost{get;set;}
void JedDopredu()
{
//nějaká implementace
}
}
class Auto : IDopravniProstredek
{
int Rychlost{get;set;}
void JedDopredu()
{
//nějaká implementace
}
}
A teď si představ, že chceš do jedné kolekce nacpat dopravní prostředky. Díky tomu, že jsou oba odvozené od stejného rozhraní, můžu použít takovýto kód:var list = new List<IDopravniProstredek>();
list.Add(new Kolo());
list.Add(new Auto());
Kromě toho, a to je možná to nejdůležitější, si můžeš být jistý, že třídy odvozené od jednoho rozhraní mají stejné metody a vlastnosti, když je obsahuje i jejich rozhraní. To možná nevypadá jako pádný důvod, protože jasně, můžu se podívat na zdrojový kód a vidím, kdo má jaké metody, ale tady jde o to, že si tím můžeš být jistý i programově - tvořit na jejich vztazích různě závilosti, předávat rozhraní jako parametr a být si jistý, že vše, co potřebuješ, budou odvozené třídy umět a tak podobně.To Chrasty : Takže abych si to ujasnil, pokud je k nějaké třídě přidáno rozhraní, přesně tím určuji, jaké metody a vlastnosti v ní chci mít, ale různé třídy mohou se stejnými vlastnostmi a metodami pracovat jinak? Mohl bych třeba ve tvém příkladu vynechat implementování rozhraní a výsledek by byl stejný? (Čímž nechci říct, že je to zbytečné, já jen pro ujasnění.) Pokud ano, dokáži si představit využití rozhraní při tvorbě třeba padesáti tříd, které by měly mezi sebou společných třeba pár metod.
Ano, mohl bys odstranit implementaci rozhraní a bylo by to stejné, jen bys pak instanci dané třídy nemohl přidat do té kolekce.
Tím, že k nějaké třídě přidáš rozhraní, tak jí přikazuješ, co všechno musí implementovat.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
C# - rozhrani a vlastnosti — založil jirkab
Grafické rozhraní — založil ninja řízek
Uživatelské rozhraní v C++ — založil LPG1995
Abstraktní metody a rozhrání — založil ViliX64
Moderátoři diskuze