Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
, Protected
atau 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
, Protected
Shared
, 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.
Topik Terkait
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. |