Bagikan melalui


Pernyataan Antarmuka (Visual Basic)

Mendeklarasikan nama antarmuka dan memperkenalkan definisi anggota yang membentuk antarmuka.

Sintaks

[ <attributelist> ] [ accessmodifier ] [ Shadows ] _  
Interface name [ ( Of typelist ) ]  
    [ Inherits interfacenames ]  
    [ [ modifiers ] Property membername ]  
    [ [ modifiers ] Function membername ]  
    [ [ modifiers ] Sub membername ]  
    [ [ modifiers ] Event membername ]  
    [ [ modifiers ] Interface membername ]  
    [ [ modifiers ] Class membername ]  
    [ [ modifiers ] Structure membername ]  
End Interface  

Generator

Term Definisi
attributelist Opsional. Lihat Daftar Atribut.
accessmodifier Opsional. Bisa jadi salah satu dari yang berikut:

- Publik
- Terlindungi
- Teman
- Privat
- Teman yang Terlindungi
- Dilindungi secara Privat

Lihat Tingkat akses di Visual Basic.
Shadows Opsional. Lihat Bayangan.
name Harus diisi. Nama antarmuka ini. Lihat Nama Elemen yang Dideklarasikan.
Of Opsional. Menentukan bahwa ini adalah antarmuka generik.
typelist Diperlukan jika Anda menggunakan kata kunci Dari. Daftar parameter jenis untuk antarmuka ini. Secara opsional, setiap parameter jenis dapat dinyatakan sebagai varian menggunakan pengubah generik In dan Out. Lihat Daftar Jenis.
Inherits Opsional. Mengindikasikan bahwa antarmuka ini mewarisi atribut dan anggota dari antarmuka lain. Lihat Pernyataan Inherits.
interfacenames Diperlukan jika Anda menggunakan pernyataan Inherits. Nama antarmuka tempat antarmuka ini diturunkan.
modifiers Opsional. Pengubah yang sesuai untuk anggota antarmuka yang didefinisikan.
Property Opsional. Menentukan properti yang merupakan anggota antarmuka.
Function Opsional. Menentukan prosedur Function yang merupakan anggota antarmuka.
Sub Opsional. Menentukan prosedur Sub yang merupakan anggota antarmuka.
Event Opsional. Menentukan peristiwa yang merupakan anggota antarmuka.
Interface Opsional. Mendefinisikan antarmuka yang berlapis di dalam antarmuka ini. Definisi antarmuka berlapis harus dihentikan dengan pernyataan End Interface.
Class Opsional. Menentukan kelas yang merupakan anggota antarmuka. Definisi kelas anggota harus dihentikan dengan pernyataan End Class.
Structure Opsional. Menentukan struktur yang merupakan anggota antarmuka. Definisi struktur anggota harus dihentikan dengan pernyataan End Structure.
membername Diperlukan untuk setiap properti, prosedur, peristiwa, antarmuka, kelas, atau struktur yang didefinisikan sebagai anggota antarmuka. Nama anggota.
End Interface Mengakhiri definisi Interface.

Keterangan

Antarmuka mendefinisikan sekumpulan anggota, seperti properti dan prosedur, yang dapat diterapkan oleh kelas dan struktur. Antarmuka hanya mendefinisikan tanda tangan anggota dan bukan fungsi internalnya.

Kelas atau struktur menerapkan antarmuka dengan menyediakan kode untuk setiap anggota yang ditentukan oleh antarmuka. Terakhir, saat aplikasi membuat instans dari kelas atau struktur tersebut, objek ada dan berjalan dalam memori. Untuk informasi selengkapnya, lihat Objek dan Kelas dan Antarmuka.

Anda hanya dapat menggunakan Interface di tingkat namespace atau modul. Ini berarti konteks deklarasi untuk antarmuka harus berupa file sumber, namespace, kelas, struktur, modul, atau antarmuka, dan tidak dapat menjadi prosedur atau blok. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Default.

Antarmuka default ke akses Teman. Anda dapat menyesuaikan tingkat aksesnya dengan pengubah akses. Untuk informasi selengkapnya, lihat Tingkat akses di Visual Basic.

Aturan

  • Antarmuka Berlapis. Anda dapat menentukan satu antarmuka di dalam antarmuka lain. Antarmuka luar disebut antarmuka yang mewadahi, dan antarmuka dalam disebut antarmuka berlapis.

  • Deklarasi Anggota. Saat mendeklarasikan properti atau prosedur sebagai anggota antarmuka, Anda hanya menentukan tanda tangan dari properti atau prosedur tersebut. Ini termasuk jenis elemen (properti atau prosedur), parameter dan jenis parameternya, serta jenis pengembaliannya. Karena itu, definisi anggota hanya menggunakan satu baris kode, dan pernyataan pengakhiran seperti End Function atau End Property tidak valid di dalam antarmuka.

    Sebaliknya, saat Anda menentukan enumerasi atau struktur, atau kelas atau antarmuka berlapis, perlu menyertakan anggota datanya.

  • Pengubah Anggota. Anda tidak dapat menggunakan pengubah akses apa pun saat menentukan anggota modul, Anda juga tidak dapat menentukan pengubah prosedur Shared (Bersama) atau pengubah prosedur apa pun kecuali Overloads (Beban Lebih). Anda dapat mendeklarasikan anggota mana pun dengan Shadows (Bayangan), dan Anda dapat menggunakan Default saat menentukan properti, serta ReadOnly (Baca Saja) atau WriteOnly (Tulis Saja).

  • Turunan. Jika antarmuka menggunakan Pernyataan Warisan, Anda dapat menentukan satu atau beberapa antarmuka dasar. Anda dapat mewarisi dari dua antarmuka bahkan jika masing-masingnya menentukan anggota dengan nama yang sama. Jika Anda melakukannya, kode implementasi harus menggunakan kualifikasi nama untuk menentukan anggota mana yang diterapkan.

    Antarmuka tidak dapat mewarisi dari antarmuka lain dengan tingkat akses yang lebih ketat. Misalnya, antarmuka Public tidak dapat mewarisi dari antarmuka Friend.

    Antarmuka tidak dapat mewarisi dari antarmuka yang berlapis di dalamnya.

  • Implementasi. Saat kelas menggunakan pernyataan Implements untuk mengimplementasikan antarmuka ini, kelas harus mengimplementasikan setiap anggota yang ditentukan di dalam antarmuka itu. Lebih lanjut, setiap tanda tangan dalam kode pengimplementasian harus sama persis dengan tanda tangan yang sesuai yang ditentukan di dalam antarmuka ini. Namun, nama anggota di dalam kode pengimplementasian tidak harus cocok dengan nama anggota seperti yang didefinisikan dalam antarmuka.

    Saat kelas mengimplementasikan prosedur, kelas tidak dapat menunjuk prosedur sebagai Shared.

  • Properti Default. Antarmuka dapat menentukan paling banyak satu properti sebagai properti defaultnya, yang dapat direferensikan tanpa menggunakan nama properti. Anda menentukan properti seperti itu dengan mendeklarasikannya dengan pengubah Default.

    Perhatikan bahwa ini berarti antarmuka dapat menentukan properti default hanya jika tidak mewarisi apa pun.

Perilaku

  • Tingkat Akses. Semua anggota antarmuka secara implisit memiliki akses Publik. Anda tidak dapat menggunakan pengubah akses saat menentukan anggota. Namun, kelas yang mengimplementasikan antarmuka dapat mendeklarasikan tingkat akses untuk setiap anggota yang diimplementasikan.

    Jika Anda menetapkan instans kelas ke variabel, tingkat akses anggotanya dapat bergantung pada apakah jenis data variabel adalah antarmuka yang mendasar atau kelas yang mengimplementasikan. Contoh berikut mengilustrasikan langkah-langkah ini:

    Public Interface IDemo
        Sub DoSomething()
    End Interface
    Public Class implementIDemo
        Implements IDemo
        Private Sub DoSomething() Implements IDemo.DoSomething
        End Sub
    End Class
    Dim varAsInterface As IDemo = New implementIDemo()
    Dim varAsClass As implementIDemo = New implementIDemo()
    

    Jika Anda mengakses anggota kelas melalui varAsInterface, semuanya memiliki akses publik. Namun, jika Anda mengakses anggota melalui varAsClass, Sub prosedur doSomething ini memiliki akses privat.

  • Cakupan. Antarmuka berada dalam cakupan di seluruh namespace, kelas, struktur, atau modulnya.

    Cakupan setiap anggota antarmuka adalah seluruh antarmuka.

  • Masa pakai. Antarmuka tidak memiliki masa pakai, atau anggotanya. Saat kelas mengimplementasikan antarmuka dan objek dibuat sebagai instans kelas tersebut, objek memiliki masa pakai dalam aplikasi tempatnya berjalan. Untuk informasi selengkapnya, lihat "Seumur Hidup" di Pernyataan Kelas.

Contoh

Contoh berikut menggunakan pernyataan Interface untuk menentukan antarmuka bernama thisInterface, yang harus diimplementasikan dengan pernyataan Property dan pernyataan Function.

Public Interface thisInterface
    Property ThisProp(ByVal thisStr As String) As Char
    Function ThisFunc(ByVal thisInt As Integer) As Integer
End Interface

Perhatikan bahwa pernyataan Property dan Function tidak memperkenalkan blok yang berakhiran dengan End Property dan End Function di dalam antarmuka. Antarmuka hanya mendefinisikan tanda tangan anggotanya. Blok Property dan Function lengkap muncul di kelas yang mengimplementasikan thisInterface.

Lihat juga