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 membahayakan 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 mengimplementasikan antarmuka.

Mendeklarasikan Antarmuka

Definisi antarmuka diapit dalam pernyataan Interface dan End Interface. Mengikuti pernyataan Interface, Anda dapat menambahkan pernyataan Inherits opsional 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 pernyataan Event, Sub, Function, Property, Interface, Class, Structure, dan Enum. Antarmuka tidak boleh berisi kode implementasi atau pernyataan apa pun yang terkait dengan kode implementasi, seperti End Sub atau End Property.

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

Catatan

Kata kunci Shadows 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 lainnya—Public, Private, Friend, Protected, Shared, Overrides, MustOverride, atau Overridable—yang diizinkan. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Default.

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

Mengimplementasikan Antarmuka

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

Menerapkan Pernyataan

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

Menerapkan Kata Kunci

Kata kunci Implements 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 dalam kelas; titik; dan nama fungsi anggota, properti, atau peristiwa yang akan diimplementasikan. Nama anggota yang mengimplementasikan anggota antarmuka dapat menggunakan pengidentifikasi hukum apa pun, dan tidak terbatas pada konvensi InterfaceName_MethodName 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 pelaksana 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 legal 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 privat untuk mengimplementasikan anggota antarmuka. Ketika anggota privat mengimplementasikan anggota antarmuka, anggota tersebut menjadi tersedia melalui antarmuka meskipun tidak tersedia langsung pada variabel objek untuk kelas.

Contoh Implementasi Antarmuka

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

Contoh berikut menentukan dua bundel terfilter. Antarmuka kedua, Interface2, mewarisi Interface1 dan mendefinisikan 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 mengimplementasikan properti readonly dengan properti readwrite (artinya, Anda tidak perlu menyatakannya secara baca-saja di kelas penerapan). Menerapkan antarmuka menjanjikan untuk mengimplementasikan setidaknya anggota yang dideklarasikan antarmuka, tetapi Anda dapat menawarkan lebih banyak fungsionalitas, seperti memungkinkan properti Anda dapat ditulis.

Judul Deskripsi
Panduan: Membuat dan Mengimplementasikan Antarmuka Menyediakan prosedur terperinci yang membawa Anda melalui proses mendefinisikan dan mengimplementasikan antarmuka Anda sendiri.
Variansi dalam Antarmuka Generik Membahas kovariansi dan kontravariansi dalam antarmuka generik dan menyediakan daftar antarmuka generik varian di .NET.