Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Deklaruje nazwę interfejsu i wprowadza definicje elementów członkowskich, z których składa się interfejs.
Składnia
[ <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
Części
| Termin | Definicja |
|---|---|
attributelist |
Opcjonalny. Zobacz Lista atrybutów. |
accessmodifier |
Opcjonalny. Może być jednym z następujących elementów: - Publiczny - Chroniony - Przyjaciel - Prywatny - Chroniony przyjaciel - Ochrona prywatna Zobacz Poziomy dostępu w Visual Basic. |
Shadows |
Opcjonalny. Zobacz Cienie. |
name |
To jest wymagane. Nazwa tego interfejsu. Zobacz Nazwy zadeklarowanych elementów. |
Of |
Opcjonalny. Określa, że jest to interfejs ogólny. |
typelist |
Wymagane, jeśli używasz słowa kluczowego Of . Lista parametrów typu dla tego interfejsu. Opcjonalnie każdy parametr typu może być zadeklarowany jako wariant przy użyciu i InOut modyfikatorów ogólnych. Zobacz Typ listy. |
Inherits |
Opcjonalny. Wskazuje, że ten interfejs dziedziczy atrybuty i elementy członkowskie innego interfejsu lub interfejsu. Zobacz Dziedziczy instrukcję. |
interfacenames |
Wymagane, jeśli używasz instrukcji Inherits . Nazwy interfejsów, z których pochodzi ten interfejs. |
modifiers |
Opcjonalny. Odpowiednie modyfikatory dla zdefiniowanego elementu członkowskiego interfejsu. |
Property |
Opcjonalny. Definiuje właściwość, która jest elementem członkowskim interfejsu. |
Function |
Opcjonalny. Definiuje procedurę Function , która jest elementem członkowskim interfejsu. |
Sub |
Opcjonalny. Definiuje procedurę Sub , która jest elementem członkowskim interfejsu. |
Event |
Opcjonalny. Definiuje zdarzenie, które jest elementem członkowskim interfejsu. |
Interface |
Opcjonalny. Definiuje interfejs, który jest zagnieżdżony w tym interfejsie. Definicja zagnieżdżonego interfejsu musi zakończyć się instrukcją End Interface . |
Class |
Opcjonalny. Definiuje klasę, która jest elementem członkowskim interfejsu. Definicja klasy składowej musi zakończyć się instrukcją End Class . |
Structure |
Opcjonalny. Definiuje strukturę, która jest elementem członkowskim interfejsu. Definicja struktury składowej musi kończyć się instrukcją End Structure . |
membername |
Wymagane dla każdej właściwości, procedury, zdarzenia, interfejsu, klasy lub struktury zdefiniowanej jako element członkowski interfejsu. Nazwa członka |
End Interface |
Kończy definicję Interface . |
Uwagi
Interfejs definiuje zestaw elementów członkowskich, takich jak właściwości i procedury, które mogą implementować klasy i struktury. Interfejs definiuje tylko podpisy elementów członkowskich, a nie ich wewnętrzne działanie.
Klasa lub struktura implementuje interfejs, podając kod dla każdego elementu członkowskiego zdefiniowanego przez interfejs. Na koniec, gdy aplikacja tworzy wystąpienie z tej klasy lub struktury, obiekt istnieje i działa w pamięci. Aby uzyskać więcej informacji, zobacz Objects and Classes and Interfaces (Obiekty i klasy i interfejsy).
Można używać Interface tylko na poziomie przestrzeni nazw lub modułu. Oznacza to, że kontekst deklaracji interfejsu musi być plikiem źródłowym, przestrzenią nazw, klasą, strukturą, modułem lub interfejsem i nie może być procedurą ani blokiem. Aby uzyskać więcej informacji, zobacz Konteksty deklaracji i Domyślne poziomy dostępu.
Interfejsy domyślnie mają dostęp znajomy . Możesz dostosować ich poziomy dostępu za pomocą modyfikatorów dostępu. Aby uzyskać więcej informacji, zobacz Poziomy dostępu w Visual Basic.
Reguły
Zagnieżdżanie interfejsów. Można zdefiniować jeden interfejs w innym. Interfejs zewnętrzny jest nazywany interfejsem zawierającym, a interfejs wewnętrzny jest nazywany zagnieżdżonym interfejsem.
Deklaracja elementu członkowskiego. Podczas deklarowania właściwości lub procedury jako elementu członkowskiego interfejsu definiujesz tylko podpis tej właściwości lub procedury. Obejmuje to typ elementu (właściwość lub procedura), jego parametry i typy parametrów oraz typ zwracany. W związku z tym definicja elementu członkowskiego używa tylko jednego wiersza kodu, a instrukcje zakończenia, takie jak
End FunctionlubEnd Propertynie są prawidłowe w interfejsie.Natomiast podczas definiowania wyliczenia lub struktury albo zagnieżdżonej klasy lub interfejsu należy uwzględnić ich składowe danych.
Modyfikatory składowych. Nie można używać żadnych modyfikatorów dostępu podczas definiowania elementów członkowskich modułu ani nie można określić modyfikatora współużytkowanego ani żadnej procedury z wyjątkiem przeciążeń. Możesz zadeklarować dowolny element członkowski z cieniami i użyć opcji Domyślne podczas definiowania właściwości, a także funkcji ReadOnly lub WriteOnly.
Dziedziczenie. Jeśli interfejs używa instrukcji Inherits, można określić jeden lub więcej interfejsów podstawowych. Można dziedziczyć z dwóch interfejsów, nawet jeśli każdy z nich definiuje element członkowski o tej samej nazwie. Jeśli to zrobisz, kod implementowania musi używać kwalifikacji nazwy, aby określić, który element członkowski implementuje.
Interfejs nie może dziedziczyć z innego interfejsu z bardziej restrykcyjnym poziomem dostępu. Na przykład
Publicinterfejs nie może dziedziczyć z interfejsuFriend.Interfejs nie może dziedziczyć z interfejsu zagnieżdżonego w nim.
Implementacja. Gdy klasa używa instrukcji Implements do implementowania tego interfejsu, musi zaimplementować każdy element członkowski zdefiniowany w interfejsie. Ponadto każdy podpis w kodzie implementowania musi dokładnie odpowiadać odpowiedniemu podpisowi zdefiniowanemu w tym interfejsie. Jednak nazwa elementu członkowskiego w kodzie implementowania nie musi być zgodna z nazwą elementu członkowskiego zdefiniowaną w interfejsie.
Gdy klasa implementuje procedurę, nie może wyznaczyć procedury jako
Shared.Właściwość domyślna. Interfejs może określić co najwyżej jedną właściwość jako właściwość domyślną, do której można się odwołać bez użycia nazwy właściwości. Taką właściwość należy określić, deklarując ją za pomocą modyfikatora domyślnego .
Zauważ, że oznacza to, że interfejs może zdefiniować właściwość domyślną tylko wtedy, gdy dziedziczy żaden.
Zachowanie
Poziom dostępu. Wszystkie elementy członkowskie interfejsu niejawnie mają dostęp publiczny . Nie można użyć żadnego modyfikatora dostępu podczas definiowania elementu członkowskiego. Jednak klasa implementowania interfejsu może zadeklarować poziom dostępu dla każdego zaimplementowanego elementu członkowskiego.
Jeśli przypiszesz wystąpienie klasy do zmiennej, poziom dostępu jej składowych może zależeć od tego, czy typ danych zmiennej jest interfejsem bazowym, czy klasą implementowania. Poniższy przykład ilustruje to.
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()Jeśli uzyskujesz dostęp do składowych klas za pośrednictwem
varAsInterfaceprogramu , wszystkie te elementy mają dostęp publiczny. Jeśli jednak uzyskujesz dostęp do członków za pośrednictwemvarAsClassmetody ,SubproceduradoSomethingma dostęp prywatny.Zakres. Interfejs jest w zakresie w całej przestrzeni nazw, klasie, strukturze lub module.
Zakres każdego elementu członkowskiego interfejsu to cały interfejs.
Życie. Interfejs nie ma okresu istnienia ani jego elementów członkowskich. Gdy klasa implementuje interfejs i obiekt jest tworzony jako wystąpienie tej klasy, obiekt ma okres istnienia w aplikacji, w której jest uruchomiona. Aby uzyskać więcej informacji, zobacz "Lifetime" in Class Statement (Wyrażenie klasy).
Przykład
W poniższym przykładzie użyto instrukcji Interface , aby zdefiniować interfejs o nazwie thisInterface, który musi zostać zaimplementowany za pomocą Property instrukcji i instrukcji Function .
Public Interface thisInterface
Property ThisProp(ByVal thisStr As String) As Char
Function ThisFunc(ByVal thisInt As Integer) As Integer
End Interface
Należy pamiętać, że Property instrukcje i Function nie wprowadzają bloków kończących się na End Property i End Function w interfejsie. Interfejs definiuje tylko podpisy swoich elementów członkowskich.
Property Pełne bloki są Function wyświetlane w klasie implementujące thisInterfaceelement .