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 neboEnd 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 zFriend
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ímvarAsClass
, máSub
tento postupdoSomething
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
.