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.
Topik Terkait
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. |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk