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 |
---|---|
Zawiera szczegółową procedurę wykonywaną przez proces definiowania i realizacji własnych interfejsu. |
|
Omówiono Kowariancja i kontrawariancja w interfejsach rodzajowy i listy wariantu rodzajowy interfejsów w.NET Framework. |