Udostępnij za pośrednictwem


Interfejsy (Visual Studio)

Interfejsy zdefiniować właściwości, metod i zdarzeń, które można zaimplementować klas.Interfejsy pozwalają zdefiniować funkcje w małych grupach ściśle powiązanych właściwości, metod i zdarzeń; Zmniejsza problemy ze zgodnością, ponieważ można rozwijać implementacji rozszerzonych dla interfejsów sieci bez zagrażające istniejący kod.W dowolnym momencie można dodać nowe funkcje, poprzez rozwijanie interfejsów dodatkowe i implementacji.

Istnieje kilka powodów dlaczego warto używać interfejsów nad dziedziczeniem klas:

  • Interfejsy są lepiej dostosowane do sytuacji, w których aplikacje wymagają, że prawdopodobnie niepowiązanych wiele typów obiektów, aby zapewnić pewne funkcje.

  • Interfejsy są bardziej elastyczne niż klas podstawowych, ponieważ można zdefiniować jedną implementację, który można zaimplementować wiele interfejsów.

  • Interfejsy są lepiej w sytuacjach, w których nie trzeba dziedziczą implementacji klasy podstawowej.

  • Interfejsy są przydatne, gdy nie można użyć dziedziczenia klas.Na przykład struktur nie dziedziczą z klasy, ale mogą one zawierać interfejsy.

Deklarowanie interfejsów

Definicje interfejsu są ujęte w Interface i End Interface instrukcji.Po Interface instrukcji, można dodać opcjonalny Inherits instrukcji, która wyświetla jedną lub więcej interfejsów dziedziczone.Inherits Sprawozdania musi poprzedzać wszystkie inne instrukcje w deklaracji z wyjątkiem komentarzy.The remaining statements in the interface definition should be Event, Sub, Function, Property, Interface, Class, Structure, and Enum statements.Interfejsy nie mogą zawierać żadnych wykonania kodu lub instrukcje związane z wykonania kodu, takie jak End Sub lub End Property.

W obszarze nazw, instrukcje interfejsu są Friend domyślnie, ale one mogą również być jawnie deklarowane jako Public lub Friend.Interfejsy zdefiniowane w ramach klas, moduły, interfejsów i struktury są Public domyślnie, ale one mogą również być jawnie deklarowane jako Public, Friend, Protected, lub Private.

[!UWAGA]

Shadows Słowa kluczowego mogą być stosowane do wszystkich członków interfejsu.Overloads Słowa kluczowego, które można stosować do Sub, Function, i Property sprawozdań zadeklarowane w definicji interfejsu.Ponadto Property sprawozdań może mieć Default, ReadOnly, lub WriteOnly modyfikatorów.None of the other modifiers—Public, Private, Friend, Protected, Shared, Overrides, MustOverride, or Overridable—are allowed.Aby uzyskać więcej informacji, zobacz Kontekst deklaracji i domyślne poziomy dostępu (Visual Basic).

Na przykład poniższy kod definiuje interfejs z jedną funkcję i jedną właściwość jedno zdarzenie.

Interface IAsset
    Event ComittedChange(ByVal Success As Boolean)
    Property Division() As String 
    Function GetID() As Integer 
End Interface

Implementowanie interfejsów.

Visual Basic Słowem zarezerwowanym Implements jest używany na dwa sposoby.Implements Instrukcji oznacza, że klasy lub struktury implementuje interfejs.Implements Słowa kluczowego oznacza, że klasa członka lub członka struktury implementuje Członkowskich określonego interfejsu.

Instrukcja implementuje

Jeśli klasy lub struktury implementuje interfejsy jednego lub więcej, musi on zawierać Implements oświadczenie niezwłocznie po Class lub Structure instrukcji.Implements Instrukcji wymaga rozdzielaną przecinkami listę interfejsów, które powinny być implementowane przez klasy.Klasy lub struktury należy zaimplementować wszystkich członków interfejsu za pomocą Implements słowa kluczowego.

Słowo kluczowe implements

Implements Słowa kluczowego wymaga rozdzielana przecinkami lista członków interfejsu mają być wprowadzone w życie.Ogólnie tylko członek pojedynczego interfejsu jest określony, ale można określić wiele składników.Specyfikacja elementem interfejsu składa się z nazwy interfejsu, która musi być określona w instrukcji implementuje w obrębie klasy; okres; i nazwę funkcji składowej, właściwości lub zdarzenia, które mają być wprowadzone w życie.Nazwa elementu członkowskiego, który implementuje elementem interfejsu można użyć dowolnego poprawnego identyfikatora i nie jest ograniczony do InterfaceName_MethodName Konwencja używana w starszych wersjach Visual Basic.

Na przykład, poniższy kod ilustruje sposób deklarowania podprocedurę o nazwie Sub1 który implementuje metody interfejsu:

Class Class1
    Implements interfaceclass.interface2

    Sub Sub1(ByVal i As Integer) Implements interfaceclass.interface2.Sub1
    End Sub 
End Class

Typy parametrów i typami zwracanych członka wykonawcze muszą odpowiadać deklaracji właściwości lub członka interfejsu w interfejsie.Najczęstszym sposobem zaimplementowania element interfejsu jest z członkiem, który ma taką samą nazwę jak interfejs, jak pokazano w poprzednim przykładzie.

Aby zadeklarować implementacji metody interfejsu, można użyć wszelkie atrybuty, które są prawnych w deklaracji metody instancji, łącznie z Overloads, Overrides, Overridable, Public, Private, Protected, Friend, Protected Friend, MustOverride, Default, i Static.Shared Atrybutu jest niedozwolona, ponieważ definiuje klasę zamiast metody instancji.

Za pomocą Implements, można również napisać pojedynczą metodę, która implementuje wiele metod zdefiniowane w interfejsie, jak w poniższym przykładzie:

Class Class2
    Implements I1, I2

    Protected Sub M1() Implements I1.M1, I1.M2, I2.M3, I2.M4
    End Sub 
End Class

Członek prywatny można użyć do wykonania do członka interfejsu.Gdy członek prywatny implementuje członka interfejsu, członek staje się dostępne z interfejsu nawet, jeśli nie jest dostępna bezpośrednio w zmiennych obiektu klasy.

Przykłady implementacji interfejsu

Klasy implementujące interfejs musi implementować wszystkich jego właściwości, metod i zdarzeń.

Poniższy przykład definiuje dwa interfejsy.Drugi interfejs Interface2, dziedziczy Interface1 i określa dodatkowe właściwości i metody.

Interface Interface1
    Sub sub1(ByVal i As Integer)
End Interface 

' Demonstrates interface inheritance. 
Interface Interface2
    Inherits Interface1
    Sub M1(ByVal y As Integer)
    ReadOnly Property Num() As Integer 
End Interface

Następny przykład implementuje Interface1, interface, określonych w poprzednim przykładzie:

Public Class ImplementationClass1
    Implements Interface1
    Sub Sub1(ByVal i As Integer) Implements Interface1.sub1
        ' Insert code here to implement this method. 
    End Sub 
End Class

Końcowy przykład implementuje Interface2, włączając w to metodę dziedziczone z Interface1:

Public Class ImplementationClass2
    Implements Interface2
    Dim INum As Integer = 0
    Sub sub1(ByVal i As Integer) Implements Interface2.sub1
        ' Insert code here that implements this method. 
    End Sub 
    Sub M1(ByVal x As Integer) Implements Interface2.M1
        ' Insert code here to implement this method. 
    End Sub 

    ReadOnly Property Num() As Integer Implements Interface2.Num
        Get
            Num = INum
        End Get 
    End Property 
End Class

Tematy pokrewne

Tytuł

Opis

Wskazówki: tworzenie i wdrażanie interfejsów (Visual Basic)

Zawiera szczegółową procedurę wykonywaną przez proces definiowania i realizacji własnych interfejsu.

Wariancje w interfejsach (C# i Visual Basic)

Omówiono Kowariancja i kontrawariancja w interfejsach rodzajowy i listy wariantu rodzajowy interfejsów w.NET Framework.