Sdílet prostřednictvím


Interface – příkaz (Visual Basic)

Deklaruje název rozhraní a zavádí definice členů, které rozhraní tvoří.

Syntaxe

[ <attributelist> ] [ accessmodifier ] [ Shadows ] _  
Interface name [ ( Of typelist ) ]  
    [ Inherits interfacenames ]  
    [ [ modifiers ] Property membername ]  
    [ [ modifiers ] Function membername ]  
    [ [ modifiers ] Sub membername ]  
    [ [ modifiers ] Event membername ]  
    [ [ modifiers ] Interface membername ]  
    [ [ modifiers ] Class membername ]  
    [ [ modifiers ] Structure membername ]  
End Interface  

Součástky

Pojem definice
attributelist Nepovinné. Viz seznam atributů.
accessmodifier Nepovinné. Může to být jedna z následujících možností:

- Public
- Protected
- Friend
- Private
- Protected Friend
- Private Protected

Viz úrovně Accessu v jazyce Visual Basic.
Shadows Nepovinné. Podívejte se na stíny.
name Povinný: Název tohoto rozhraní. Viz Deklarované názvy elementů.
Of Nepovinné. Určuje, že se jedná o obecné rozhraní.
typelist Vyžaduje se, pokud použijete klíčové slovo Of . Seznam parametrů typu pro toto rozhraní Volitelně lze každý parametr typu deklarovat variantu pomocí In a Out obecných modifikátorů. Viz seznam typů.
Inherits Nepovinné. Označuje, že toto rozhraní dědí atributy a členy jiného rozhraní nebo rozhraní. Viz Příkaz Zdědědí.
interfacenames Vyžaduje se, pokud použijete Inherits příkaz. Názvy rozhraní, ze kterých se toto rozhraní odvozuje.
modifiers Nepovinné. Vhodné modifikátory pro definovaný člen rozhraní.
Property Nepovinné. Definuje vlastnost, která je členem rozhraní.
Function Nepovinné. Definuje proceduru Function , která je členem rozhraní.
Sub Nepovinné. Definuje proceduru Sub , která je členem rozhraní.
Event Nepovinné. Definuje událost, která je členem rozhraní.
Interface Nepovinné. Definuje rozhraní, které je vnořené v rámci tohoto rozhraní. Definice vnořeného rozhraní musí být ukončena příkazem End Interface .
Class Nepovinné. Definuje třídu, která je členem rozhraní. Definice třídy člena musí být ukončena příkazem End Class .
Structure Nepovinné. Definuje strukturu, která je členem rozhraní. Definice struktury člena musí být ukončena příkazem End Structure .
membername Požadováno pro každou vlastnost, proceduru, událost, rozhraní, třídu nebo strukturu definovanou jako člen rozhraní. Název členu
End Interface Ukončí definici Interface .

Poznámky

Rozhraní definuje sadu členů, jako jsou vlastnosti a procedury, které mohou implementovat třídy a struktury. Rozhraní definuje pouze podpisy členů a nikoli jejich vnitřní fungování.

Třída nebo struktura implementuje rozhraní zadáním kódu pro každého člena definovaného rozhraním. Nakonec, když aplikace vytvoří instanci z této třídy nebo struktury, existuje objekt a běží v paměti. Další informace naleznete v tématu Objekty a třídy a rozhraní.

Můžete použít Interface pouze na úrovni oboru názvů nebo modulu. To znamená, že kontext deklarace pro rozhraní musí být zdrojovým souborem, oborem názvů, třídou, strukturou, modulem nebo rozhraním a nesmí to být procedura nebo blok. Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu.

Rozhraní ve výchozím nastavení mají přístup spřáteli . Jejich úrovně přístupu můžete upravit pomocí modifikátorů přístupu. Další informace naleznete v tématu Úrovně přístupu v jazyce Visual Basic.

Pravidla

  • Vnoření rozhraní. Jedno rozhraní můžete definovat v rámci jiného. Vnější rozhraní se nazývá obsahující rozhraní a vnitřní rozhraní se nazývá vnořené rozhraní.

  • Deklarace člena. Když deklarujete vlastnost nebo proceduru jako člen rozhraní, definujete pouze podpis této vlastnosti nebo procedury. To zahrnuje typ prvku (vlastnost nebo proceduru), jeho parametry a typy parametrů a jeho návratový typ. Z tohoto důvodu definice člena používá pouze jeden řádek kódu a ukončovací příkazy, jako End Function jsou nebo End Property nejsou platné v rozhraní.

    Naproti tomu při definování výčtu nebo struktury nebo vnořené třídy nebo rozhraní je nutné zahrnout jejich datové členy.

  • Modifikátory členů. Při definování členů modulu nelze použít žádné modifikátory přístupu, ani nelze určit modifikátor sdíleného ani žádného modifikátoru procedury s výjimkou přetížení. Můžete deklarovat libovolný člen se Stíny a můžete použít Default při definování vlastnosti, stejně jako ReadOnly nebo WriteOnly.

  • Dědičnosti. Pokud rozhraní používá příkaz Inherits, můžete zadat jedno nebo více základních rozhraní. Můžete dědit ze dvou rozhraní, i když každý z nich definuje člen se stejným názvem. Pokud to uděláte, musí prováděcí kód použít kvalifikaci názvu k určení člena, který implementuje.

    Rozhraní nemůže dědit z jiného rozhraní s přísnější úrovní přístupu. Rozhraní například Public nemůže dědit z Friend rozhraní.

    Rozhraní nemůže dědit z rozhraní vnořeného do něj.

  • Provádění. Když třída používá Implements příkaz implementovat toto rozhraní, musí implementovat každý člen definovaný v rozhraní. Kromě toho musí každý podpis v implementovacím kódu přesně odpovídat odpovídajícímu podpisu definovanému v tomto rozhraní. Název člena v implementovacím kódu se však nemusí shodovat s názvem člena definovaným v rozhraní.

    Pokud třída implementuje proceduru, nemůže určit proceduru jako Shared.

  • Výchozí vlastnost. Rozhraní může jako výchozí vlastnost zadat maximálně jednu vlastnost, na kterou lze odkazovat bez použití názvu vlastnosti. Tuto vlastnost zadáte deklarováním pomocí výchozího modifikátoru.

    Všimněte si, že to znamená, že rozhraní může definovat výchozí vlastnost pouze v případě, že dědí žádné.

Chování

  • Úroveň přístupu Všichni členové rozhraní mají implicitně veřejný přístup. Při definování člena nelze použít žádný modifikátor přístupu. Třída implementovaná rozhraní však může deklarovat úroveň přístupu pro každého implementovaného člena.

    Pokud přiřadíte instanci třídy proměnné, úroveň přístupu jejích členů může záviset na tom, zda datový typ proměnné je podkladové rozhraní nebo implementovaná třída. Toto dokládá následující příklad.

    Public Interface IDemo
        Sub DoSomething()
    End Interface
    Public Class implementIDemo
        Implements IDemo
        Private Sub DoSomething() Implements IDemo.DoSomething
        End Sub
    End Class
    Dim varAsInterface As IDemo = New implementIDemo()
    Dim varAsClass As implementIDemo = New implementIDemo()
    

    Pokud přistupujete k členům třídy prostřednictvím varAsInterface, mají všichni veřejný přístup. Pokud však přistupujete k členům prostřednictvím varAsClass, má Sub tento postup doSomething soukromý přístup.

  • Rozsah. Rozhraní je v oboru názvů, třídy, struktury nebo modulu.

    Rozsah každého člena rozhraní je celé rozhraní.

  • Životnost: Rozhraní sám o sobě nemá životnost, ani své členy. Když třída implementuje rozhraní a objekt je vytvořen jako instance této třídy, objekt má životnost v aplikaci, ve které je spuštěna. Další informace naleznete v části Životnost v příkazu třídy.

Příklad

Následující příklad používá příkaz Interface k definování rozhraní s názvem thisInterface, které musí být implementováno Property s příkazem a příkazem Function .

Public Interface thisInterface
    Property ThisProp(ByVal thisStr As String) As Char
    Function ThisFunc(ByVal thisInt As Integer) As Integer
End Interface

Všimněte si, že Property příkazy Function nezavádějí bloky končící End Property a End Function v rozhraní. Rozhraní definuje pouze podpisy jejích členů. Úplné Property a Function bloky se zobrazí ve třídě, která implementuje thisInterface.

Viz také