Sdílet prostřednictvím


Rozhraní (Příručka programování C#)

Rozhraní jsou popsány skupiny souvisejících funkcí, které patří do libovolné třídy nebo struct.Definice rozhraní pomocí rozhraní klíčové slovo, jak ukazuje následující příklad.

interface IEquatable<T>
{
    bool Equals(T obj);
}

Rozhraní se skládá z metody, vlastnosti, události, indexování nebo libovolnou kombinaci těchto typů čtyř členů.Rozhraní nemohou obsahovat konstanty, pole, operátory, instance konstruktory, destruktory nebo typy.Nesmí obsahovat statické členy.Členy rozhraní jsou automaticky veřejné a neobsahují žádné modifikátory přístupu.

Při třídy nebo struct implementuje rozhraní, třídy nebo struct poskytuje implementaci všech členů definovaných rozhraní.Samotné rozhraní obsahuje žádná funkce, které třídy nebo struct může zdědit způsobem, že funkce základní třídy lze dědit.Pokud je základní třída implementuje rozhraní, zdědí odvozené třídy plnění.Odvozené třídy se říká implicitně implementovat rozhraní.

Třídy a struktur implementovat rozhraní způsobem podobným jak dědění tříd základní třídu nebo struct se dvěma výjimkami:

  • Třídy nebo struct implementovat více rozhraní.

  • Při třídy nebo struct implementuje rozhraní, obdrží pouze názvy metod a podpisy, protože samotné rozhraní obsahuje žádné implementace, jak ukazuje následující příklad.

    public class Car : IEquatable<Car>
    {
        public string Make {get; set;}
        public string Model { get; set; }
        public string Year { get; set; }
    
        // Implementation of IEquatable<T> interface
        public bool Equals(Car car)
        {
            if (this.Make == car.Make &&
                this.Model == car.Model &&
                this.Year == car.Year)
            {
                return true;
            }
            else
                return false;
        }
    }
    

IEquatable<T> Rozhraní ohlášen uživateli na objekt, který objekt můžete určit, zda je rovna jiné objekty stejného typu a není nutné znát způsob implementace uživatelského rozhraní.

Chcete-li implementovat jako člen rozhraní musí odpovídající člen třídy být veřejnosti, které nejsou statické a mít stejné jméno a podpis jako člen rozhraní.Vlastnosti a indexování třídy můžete definovat další přístupové objekty pro vlastnost nebo indexovací člen v rozhraní definována.Rozhraní může být například deklarovat vlastnost, která má get přístupový objekt.Třída, která implementuje rozhraní deklarovat stejnou vlastnost s oběma získat a set přístupový objekt.Pokud vlastnost nebo indexovací člen používá explicitní implementace, musí však odpovídat přístupové objekty.Další informace o explicitní implementaceVlastnosti (Příručka programování C#) rozhraní

Rozhraní a členy rozhraní jsou abstraktní; rozhraní neposkytují výchozí implementace.Další informace naleznete v tématu abstraktní a uzavřených tříd a členů tříd.

Rozhraní může dědit jiná rozhraní.Je možné, že třída dědí rozhraní několikrát, základní třídy, které dědí nebo prostřednictvím rozhraní, které jsou zděděny jiná rozhraní.Však může třída implementovat rozhraní pouze jeden čas a pouze v případě, že rozhraní je deklarován jako část definice třídy, jako v class ClassName : InterfaceName.Pokud je zděděna rozhraní, protože zděděné základní třídy, která implementuje rozhraní, jeho provádění poskytuje základní třídy.Je také možné implementovat členy rozhraní pomocí virtuální členy základní třída.V takovém případě odvozené třídy můžete změnit chování rozhraní přepsání virtuální členů.Další informace o virtuálních členy viz polymorfismus.

Přehled rozhraní

Rozhraní má následující vlastnosti:

  • Rozhraní je jako základní třídy: neabstraktním typu, která implementuje rozhraní musí implementovat všechny členy.

  • Rozhraní nelze vytvořit instanci přímo.

  • Rozhraní může obsahovat události, indexování, metody a vlastnosti.

  • Rozhraní obsahovat žádná implementace metody.

  • Třídy a struktur lze implementovat více rozhraní.

  • Samotné rozhraní může dědit z více rozhraní.

V tomto oddíle

Související oddíly

Kapitola hlavní knihy

InterfacesvLearning C# 3.0: Master the Fundamentals of C# 3.0

Viz také

Referenční dokumentace

Dědičnost (Příručka programování C#)

Koncepty

Příručka programování C#