Arabirimler (Visual Basic)
Arabirimler sınıfların uygulayabileceği özellikleri, yöntemleri ve olayları tanımlar. Arabirimler, özellikleri yakından ilişkili özellikler, yöntemler ve olaylardan oluşan küçük gruplar olarak tanımlamanıza olanak sağlar; Bu, mevcut kodu tehlikeye atmadan arabirimleriniz için gelişmiş uygulamalar geliştirebileceğinizden uyumluluk sorunlarını azaltır. İstediğiniz zaman ek arabirimler ve uygulamalar geliştirerek yeni özellikler ekleyebilirsiniz.
Sınıf devralma yerine arabirimleri kullanmak istemeniz için birkaç neden daha vardır:
Arabirimler, uygulamalarınızın belirli işlevleri sağlamak için birçok büyük olasılıkla ilişkisiz nesne türü gerektirdiği durumlara daha uygundur.
Birden çok arabirim uygulayabilen tek bir uygulama tanımlayabildiğiniz için arabirimler temel sınıflara göre daha esnektir.
Arabirimler, bir temel sınıftan uygulamayı devralmak zorunda olmadığınız durumlarda daha iyidir.
Sınıf devralmayı kullanamadığınızda arabirimler yararlıdır. Örneğin, yapılar sınıflardan devralamaz, ancak arabirimleri uygulayabilir.
Arabirimleri Bildirme
Arabirim tanımları ve End Interface
deyimlerinin içine Interface
alınır. deyiminin Interface
ardından, devralınan bir veya daha fazla arabirimi listeleyen isteğe bağlı Inherits
bir deyim ekleyebilirsiniz. Inherits
deyimleri, açıklama dışında bildirimdeki diğer tüm deyimlerden önce olmalıdır. Arabirim tanımındaki kalan deyimler , , Sub
, Function
, Property
, Interface
, Class
, Structure
ve Enum
deyimleri olmalıdırEvent
. Arabirimler, veya gibi End Sub
uygulama koduyla ilişkili uygulama kodu veya End Property
deyimleri içeremez.
Bir ad alanında, arabirim deyimleri varsayılan olarakdırFriend
, ancak açıkça veya Friend
olarak Public
da bildirilebilir. Sınıflar, modüller, arabirimler ve yapılar içinde tanımlanan arabirimler varsayılan olarakdırPublic
, ancak açıkça , Friend
, Protected
veya Private
olarak Public
da bildirilebilir.
Not
Anahtar Shadows
sözcüğü tüm arabirim üyelerine uygulanabilir. anahtar Overloads
sözcüğü, bir arabirim tanımında bildirilen , Function
ve Property
deyimlerine uygulanabilirSub
. Buna ek olarak, Property
deyimler , ReadOnly
veya WriteOnly
değiştiricilerine Default
sahip olabilir. Diğer değiştiricilerinPublic
(, , Private
Friend
, , Protected
, Shared
, Overrides
, MustOverride
veya Overridable
) hiçbirlerine izin verilmez. Daha fazla bilgi için bkz. Bildirim Bağlamları ve Varsayılan Erişim Düzeyleri.
Örneğin, aşağıdaki kod bir işlev, bir özellik ve bir olay içeren bir arabirim tanımlar.
Interface IAsset
Event ComittedChange(ByVal Success As Boolean)
Property Division() As String
Function GetID() As Integer
End Interface
Arabirimleri Uygulama
Visual Basic ayrılmış sözcüğü Implements
iki şekilde kullanılır. deyimi, Implements
bir sınıfın veya yapının bir arabirim uyguladığını gösterir. anahtar Implements
sözcüğü, bir sınıf üyesinin veya yapı üyesinin belirli bir arabirim üyesini uyguladığını gösterir.
Implements Deyimi
Bir sınıf veya yapı bir veya daha fazla arabirim uygularsa, veya Structure
deyiminden Implements
hemen sonra deyimini Class
içermelidir. deyimi, Implements
bir sınıf tarafından uygulanacak arabirimlerin virgülle ayrılmış bir listesini gerektirir. Sınıfın veya yapının anahtar sözcüğünü kullanarak tüm arabirim üyelerini Implements
uygulaması gerekir.
Anahtar Sözcük Uygular
anahtar Implements
sözcüğü, uygulanacak arabirim üyelerinin virgülle ayrılmış bir listesini gerektirir. Genel olarak, yalnızca tek bir arabirim üyesi belirtilir, ancak birden çok üye belirtebilirsiniz. Bir arabirim üyesinin belirtimi, sınıfı içindeki bir implements deyiminde belirtilmesi gereken arabirim adından oluşur; nokta; ve uygulanacak üye işlevinin, özelliğinin veya olayının adı. Arabirim üyesi uygulayan bir üyenin adı herhangi bir yasal tanımlayıcı kullanabilir ve Visual Basic önceki sürümlerinde kullanılan kuralla sınırlı InterfaceName_MethodName
değildir.
Örneğin, aşağıdaki kod bir arabirimin yöntemini uygulayan adlı Sub1
bir alt yordam bildirmeyi gösterir:
Class Class1
Implements interfaceclass.interface2
Sub Sub1(ByVal i As Integer) Implements interfaceclass.interface2.Sub1
End Sub
End Class
Uygulayan üyenin parametre türleri ve dönüş türleri arabirimdeki arabirim özelliği veya üye bildirimiyle eşleşmelidir. Bir arabirimin öğesini uygulamanın en yaygın yolu, önceki örnekte gösterildiği gibi arabirimle aynı ada sahip bir üyedir.
Bir arabirim yönteminin uygulanmasını bildirmek için , , , , Overridable
Default
Friend
Public
MustOverride
Private
Protected Friend
Protected
ve Static
dahil olmak üzere Overloads
Overrides
örnek yöntemi bildirimleri üzerinde yasal olan tüm öznitelikleri kullanabilirsiniz. Shared
Özniteliği, örnek yöntemi yerine bir sınıf tanımladığından yasal değildir.
kullanarak Implements
, aşağıdaki örnekte olduğu gibi bir arabirimde tanımlanan birden çok yöntemi uygulayan tek bir yöntem de yazabilirsiniz:
Class Class2
Implements I1, I2
Protected Sub M1() Implements I1.M1, I1.M2, I2.M3, I2.M4
End Sub
End Class
Arabirim üyesi uygulamak için özel üye kullanabilirsiniz. Özel üye bir arabirimin üyesini uyguladığında, sınıfı için nesne değişkenlerinde doğrudan kullanılamasa bile bu üye arabirimi aracılığıyla kullanılabilir hale gelir.
Arabirim Uygulama Örnekleri
Bir arabirimi uygulayan sınıfların tüm özelliklerini, yöntemlerini ve olaylarını uygulaması gerekir.
Aşağıdaki örnek iki arabirimi tanımlar. İkinci arabirim olan Interface2
, ek bir özellik ve yöntemi devralır Interface1
ve tanımlar.
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
Sonraki örnek, önceki örnekte tanımlanan arabirimini uygular Interface1
:
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
Son örnek, uygulamasından devralınan Interface1
bir yöntem de dahil olmak üzere uygulamasını uygularInterface2
:
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
Readwrite özelliğiyle salt okunur bir özellik uygulayabilirsiniz (yani, bunu uygulayan sınıfta salt okunur olarak bildirmeniz gerekmez). Bir arabirimi uygulamak, en azından arabirimin bildirdiği üyeleri uygulamayı vaat eder, ancak özelliğinizin yazılabilir olmasını sağlamak gibi daha fazla işlevsellik sunabilirsiniz.
İlgili Konular
Başlık | Açıklama |
---|---|
İzlenecek yol: Arabirimleri Oluşturma ve Uygulama | Kendi arabiriminizi tanımlama ve uygulama sürecinde size yol gösteren ayrıntılı bir yordam sağlar. |
Genel Arabirimlerde Varyans | Genel arabirimlerde kovaryans ve kontravaryansı açıklar ve .NET Framework değişken genel arabirimlerin bir listesini sağlar. |