Aracılığıyla paylaş


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, Structureve Enum deyimleri olmalıdırEvent. Arabirimler, veya gibi End Sub uygulama koduyla ilişkili uygulama kodu veya End Propertydeyimleri içeremez.

Bir ad alanında, arabirim deyimleri varsayılan olarakdırFriend, ancak açıkça veya Friendolarak 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, Protectedveya Privateolarak Publicda bildirilebilir.

Not

Anahtar Shadows sözcüğü tüm arabirim üyelerine uygulanabilir. anahtar Overloads sözcüğü, bir arabirim tanımında bildirilen , Functionve Property deyimlerine uygulanabilirSub. Buna ek olarak, Property deyimler , ReadOnlyveya WriteOnly değiştiricilerine Defaultsahip olabilir. Diğer değiştiricilerinPublic (, , PrivateFriend, , Protected, Shared, Overrides, MustOverrideveya 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 , , , , OverridableDefaultFriendPublicMustOverridePrivateProtected FriendProtectedve Staticdahil olmak üzere OverloadsOverridesö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 Interface1bir 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.

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.