Interface – příkaz (Visual Basic)
Deklaruje název rozhraní a zavádí definice členů, které rozhraní tvoří.
Syntax
[ <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části
| Pojem | Definice |
|---|---|
attributelist |
Nepovinný parametr. Viz Seznam atributů. |
accessmodifier |
Nepovinný parametr. Může to být jedna z následujících možností: - Veřejné - Chráněné - Přítel - Soukromé - Protected Friend - Private Protected Viz Úrovně přístupu v Visual Basic. |
Shadows |
Nepovinný parametr. Viz Stíny. |
name |
Povinná hodnota. Název tohoto rozhraní. Viz Deklarované názvy elementů. |
Of |
Nepovinný parametr. 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 jako variantu pomocí In obecných Out modifikátorů a . Viz Seznam typů. |
Inherits |
Nepovinný parametr. Označuje, že toto rozhraní dědí atributy a členy jiného rozhraní nebo rozhraní. Viz Příkaz Inherits. |
interfacenames |
Vyžaduje se, pokud použijete Inherits příkaz . Názvy rozhraní, ze kterých je toto rozhraní odvozeno. |
modifiers |
Nepovinný parametr. Vhodné modifikátory pro definovaný člen rozhraní. |
Property |
Nepovinný parametr. Definuje vlastnost, která je členem rozhraní. |
Function |
Nepovinný parametr. Definuje Function proceduru, která je členem rozhraní. |
Sub |
Nepovinný parametr. Definuje Sub proceduru, která je členem rozhraní. |
Event |
Nepovinný parametr. Definuje událost, která je členem rozhraní. |
Interface |
Nepovinný parametr. Definuje rozhraní, které je vnořené v rámci tohoto rozhraní. Definice vnořeného rozhraní musí být ukončena End Interface příkazem . |
Class |
Nepovinný parametr. Definuje třídu, která je členem rozhraní. Definice členské třídy musí být ukončena End Class příkazem . |
Structure |
Nepovinný parametr. Definuje strukturu, která je členem rozhraní. Definice členské struktury musí být ukončena End Structure příkazem . |
membername |
Vyžaduje se pro každou vlastnost, proceduru, událost, rozhraní, třídu nebo strukturu definovanou jako člen rozhraní. Název členu |
End Interface |
Ukončí Interface definici. |
Poznámky
Rozhraní definuje sadu členů, jako jsou vlastnosti a procedury, které mohou implementovat třídy a struktury. Rozhraní definuje pouze podpisy členů, nikoli jejich vnitřní fungování.
Třída nebo struktura implementuje rozhraní poskytnutím kódu pro každého člena definovaného rozhraním. Nakonec, když aplikace vytvoří instanci z této třídy nebo struktury, objekt existuje a běží v paměti. Další informace najdete v tématu Objekty a třídy a rozhraní.
Můžete použít pouze Interface na úrovni oboru názvů nebo modulu. To znamená, že kontext deklarace pro rozhraní musí být zdrojový soubor, obor názvů, třída, struktura, modul nebo rozhraní a nemůže být procedurou nebo blokem. Další informace najdete v tématu Kontexty deklarace a Výchozí úrovně přístupu.
Rozhraní ve výchozím nastavení mají přístup s přáteli. Jejich úrovně přístupu můžete upravit pomocí modifikátorů přístupu. Další informace najdete v tématu Úrovně přístupu v Visual Basic.
Pravidla
Vnořovací rozhraní. Můžete definovat jedno rozhraní 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 členu. Když deklarujete vlastnost nebo proceduru jako člen rozhraní, definujete pouze podpis této vlastnosti nebo procedury. To zahrnuje typ elementu (vlastnost nebo proceduru), jeho parametry a typy parametrů a jeho návratový typ. Z tohoto důvodu definice členu používá pouze jeden řádek kódu a ukončující příkazy, jako je nebo , nejsou v
End FunctionEnd Propertyrozhraní platné.Naproti tomu při definování výčtu nebo struktury nebo vnořené třídy či rozhraní je nutné zahrnout jejich datové členy.
Modifikátory členu. Při definování členů modulu nelze použít žádné modifikátory přístupu, ani nelze zadat modifikátor Shared ani žádný modifikátor procedury s výjimkou přetížení. Můžete deklarovat libovolný člen se stínya 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 v případě, že každé z nich definuje člen se stejným názvem. Pokud tak neučiníte, musí implementovaný kód používat kvalifikaci názvu, aby bylo možné určit, který člen je implementovaný.
Rozhraní nemůže dědit z jiného rozhraní s přísnější úrovní přístupu. Rozhraní například nemůže
Publicdědit zFriendrozhraní.Rozhraní nemůže dědit z vnořeného rozhraní.
Provádění. Pokud třída používá příkaz Implements k implementaci tohoto rozhraní, musí implementovat každý člen definovaný v rámci rozhraní. Každý podpis v implementující kódu musí navíc přesně odpovídat odpovídajícímu podpisu definovanému v tomto rozhraní. Název členu v implementujícím kódu se ale nemusí shodovat s názvem členu 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 nejdél jednu vlastnost , na kterou lze odkazovat bez použití názvu vlastnosti. Takovou vlastnost zadáte deklarováním pomocí modifikátoru Default.
Všimněte si, že to znamená, že rozhraní může definovat výchozí vlastnost pouze v případě, že dědí žádnou.
Chování
Úroveň přístupu. Všichni členové rozhraní mají implicitně veřejný přístup. Při definování členu nelze použít žádný modifikátor přístupu. Třída implementující rozhraní však může deklarovat úroveň přístupu pro jednotlivé implementované členy.
Pokud přiřadíte instanci třídy k proměnné, může úroveň přístupu jejích členů záviset na tom, zda je datový typ proměnné podkladovým rozhraním, nebo implementující třídou. 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 k členům třídy přistupuje prostřednictvím
varAsInterface, mají všichni veřejný přístup. Pokud ale ke členům přistupuje prostřednictvímvarAsClass,SubmádoSomethingprocedura privátní přístup.Rozsah. Rozhraní je v oboru v celém oboru názvů, třídy, struktury nebo modulu.
Obor každého člena rozhraní je celé rozhraní.
Životnost. Samotné rozhraní nemá životnost ani své členy. Když třída implementuje rozhraní a objekt je vytvořen jako instance této třídy, má objekt životnost v rámci aplikace, ve které je spuštěn. Další informace najdete v části Lifetime v příkazu třídy.
Příklad
Následující příklad používá příkaz Interface k definování rozhraní s názvem , které musí být thisInterface implementováno pomocí příkazu a příkazu Property 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 Property si, že Function příkazy a nezavádějí bloky končící na a v End Property rámci End Function rozhraní. Rozhraní definuje pouze podpisy svých členů. Úplné bloky Property a se zobrazí ve Function třídě, která implementuje thisInterface .