Bagikan melalui


Antarmuka (Visual Basic)

Antarmuka menentukan properti, metode, dan peristiwa yang dapat diterapkan kelas. Antarmuka memungkinkan Anda menentukan fitur sebagai grup kecil properti, metode, dan peristiwa yang terkait erat; ini mengurangi masalah kompatibilitas karena Anda dapat mengembangkan implementasi yang ditingkatkan untuk antarmuka Anda tanpa membahmari kode yang ada. Anda dapat menambahkan fitur baru kapan saja dengan mengembangkan antarmuka dan implementasi tambahan.

Ada beberapa alasan lain mengapa Anda mungkin ingin menggunakan antarmuka alih-alih pewarisan kelas:

  • Antarmuka lebih cocok untuk situasi di mana aplikasi Anda memerlukan banyak jenis objek yang mungkin tidak terkait untuk menyediakan fungsionalitas tertentu.

  • Antarmuka lebih fleksibel daripada kelas dasar karena Anda dapat menentukan satu implementasi yang dapat mengimplementasikan beberapa antarmuka.

  • Antarmuka lebih baik dalam situasi di mana Anda tidak perlu mewarisi implementasi dari kelas dasar.

  • Antarmuka berguna ketika Anda tidak dapat menggunakan pewarisan kelas. Misalnya, struktur tidak dapat mewarisi dari kelas, tetapi dapat menerapkan antarmuka.

Mendeklarasikan Antarmuka

Definisi antarmuka diapit dalam elemen Interface dan End Interface. Setelah Interface pernyataan, Anda dapat menambahkan pernyataan opsional Inherits yang mencantumkan satu atau beberapa antarmuka yang diwariskan. Pernyataan Inherits harus mendahului semua pernyataan lain dalam deklarasi kecuali komentar. Pernyataan yang tersisa dalam definisi antarmuka harus Event, Sub, Function, Property, Interface, Class, Structure, dan Enum pernyataan. Antarmuka tidak boleh berisi kode implementasi atau pernyataan apa pun yang terkait dengan kode implementasi, seperti End Sub atau End Property.

Dalam namespace, deklarasi antarmuka sebagai default Friend, tetapi juga dapat dinyatakan secara eksplisit sebagai Public atau Friend. Antarmuka yang ditentukan dalam kelas, modul, antarmuka, dan struktur Public secara default, tetapi juga dapat secara eksplisit dinyatakan sebagai Public, , Friend, Protectedatau Private.

Nota

Kata Shadows kunci dapat diterapkan ke semua anggota antarmuka. Kata kunci Overloads dapat diterapkan ke pernyataan Sub, Function, dan Property yang dideklarasikan dalam definisi antarmuka. Selain itu, pernyataan Property dapat memiliki pengubah Default, ReadOnly, atau WriteOnly. Tidak ada pengubah lain—Public, , Private, Friend, ProtectedShared, Overrides, MustOverride, atau Overridable—yang diizinkan. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Bawaan.

Misalnya, kode berikut mendefinisikan antarmuka dengan satu fungsi, satu properti, dan satu peristiwa.

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

Menerapkan Antarmuka

Kata khusus Implements dalam Visual Basic digunakan dalam dua cara. Pernyataan ini Implements menandakan bahwa kelas atau struktur mengimplementasikan antarmuka. Kata Implements kunci menandakan bahwa anggota kelas atau anggota struktur mengimplementasikan anggota antarmuka tertentu.

Menerapkan Pernyataan

Jika kelas atau struktur mengimplementasikan satu atau beberapa antarmuka, harus menyertakan pernyataan Implements segera setelah pernyataan Class atau Structure. Pernyataan ini Implements memerlukan daftar antarmuka yang dipisahkan koma untuk diimplementasikan oleh kelas. Kelas atau struktur harus mengimplementasikan semua anggota antarmuka menggunakan Implements kata kunci.

Menerapkan Kata Kunci

Kata Implements kunci memerlukan daftar anggota antarmuka yang dipisahkan koma untuk diimplementasikan. Umumnya, hanya satu anggota antarmuka yang ditentukan, tetapi Anda dapat menentukan beberapa anggota. Spesifikasi anggota antarmuka terdiri dari nama antarmuka, yang harus ditentukan dalam pernyataan implementasi di dalam kelas, kemudian nama fungsi anggota, properti, atau event yang akan diimplementasikan. Nama anggota yang mengimplementasikan anggota antarmuka dapat menggunakan pengidentifikasi yang sah apa pun, dan tidak terbatas pada konstanta yang digunakan dalam versi Visual Basic sebelumnya.

Misalnya, kode berikut menunjukkan cara mendeklarasikan subroutine bernama Sub1 yang mengimplementasikan metode antarmuka:

Class Class1
    Implements interfaceclass.interface2

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

Jenis parameter dan jenis pengembalian anggota yang menerapkan harus cocok dengan properti antarmuka atau deklarasi anggota di antarmuka. Cara paling umum untuk mengimplementasikan elemen antarmuka adalah dengan anggota yang memiliki nama yang sama dengan antarmuka, seperti yang ditunjukkan pada contoh sebelumnya.

Untuk mendeklarasikan implementasi metode antarmuka, Anda dapat menggunakan atribut apa pun yang sah pada deklarasi metode instans, termasuk Overloads, Overrides, Overridable, Public, Private, Protected, Friend, Protected Friend, MustOverride, Default, dan Static. Atribut Shared ini tidak legal karena mendefinisikan kelas daripada metode instans.

Menggunakan Implements, Anda juga dapat menulis satu metode yang mengimplementasikan beberapa metode yang ditentukan dalam antarmuka, seperti dalam contoh berikut:

Class Class2
    Implements I1, I2

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

Anda dapat menggunakan anggota yang bersifat privat untuk mengimplementasikan anggota antarmuka. Ketika anggota privat mengimplementasikan anggota dari antarmuka, anggota tersebut menjadi tersedia melalui antarmuka meskipun tidak tersedia langsung pada variabel objek yang dimiliki kelas tersebut.

Contoh Implementasi Antarmuka

Kelas yang mengimplementasikan antarmuka harus mengimplementasikan semua properti, metode, dan peristiwanya.

Contoh berikut mendefinisikan dua antarmuka. Antarmuka kedua, Interface2, mewarisi Interface1 dan menentukan properti dan metode tambahan.

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

Contoh berikutnya mengimplementasikan Interface1, antarmuka yang ditentukan dalam contoh sebelumnya:

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

Contoh akhir mengimplementasikan Interface2, termasuk metode yang diwarisi dari 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

Anda dapat menerapkan properti hanya-baca dengan properti baca-tulis (artinya, Anda tidak perlu mendeklarasikannya sebagai hanya-baca di kelas yang menerapkan). Menerapkan antarmuka menjamin implementasi setidaknya elemen yang dideklarasikan oleh antarmuka, tetapi Anda dapat menawarkan lebih banyak fungsionalitas, seperti memungkinkan properti Anda untuk dapat diubah.

Judul Deskripsi
Panduan: Membuat dan Menerapkan Antarmuka Menyediakan prosedur terperinci yang membawa Anda melalui proses menentukan dan menerapkan antarmuka Anda sendiri.
Varians dalam Antarmuka Generik Membahas kovariansi dan kontravariansi dalam antarmuka generik dan menyediakan daftar antarmuka generik varian dalam .NET Framework.