Bagikan melalui


Deklarasi Variabel Objek (Visual Basic)

Anda menggunakan pernyataan deklarasi normal untuk mendeklarasikan variabel objek. Untuk jenis data, Anda menentukan ( Object yaitu, Tipe Data Objek) atau kelas yang lebih spesifik tempat objek akan dibuat.

Mendeklarasikan variabel sebagai Object sama dengan mendeklarasikannya sebagai System.Object.

Ketika Anda mendeklarasikan variabel dengan kelas objek tertentu, variabel dapat mengakses semua metode dan properti yang diekspos oleh kelas tersebut dan kelas tempatnya mewarisi. Jika Anda mendeklarasikan variabel dengan Object, variabel hanya dapat mengakses anggota kelas Object, kecuali Anda mengatur Option Strict Off untuk mengizinkan pengikatan terlambat.

Sintaks Deklarasi

Gunakan sintaks berikut untuk mendeklarasikan variabel objek:

Dim variablename As [New] { objectclass | Object }  

Anda juga dapat menentukan Publik, Dilindungi, Teman, Protected Friend, Privat, Bersama, atau Statis dalam deklarasi. Contoh deklarasi berikut valid:

Private objA As Object  
Static objB As System.Windows.Forms.Label  
Dim objC As System.OperatingSystem  

Pengikatan Terlambat dan Pengikatan Awal

Terkadang kelas tertentu tidak diketahui sampai kode Anda berjalan. Dalam hal ini, Anda harus mendeklarasikan variabel objek dengan Object jenis data. Ini membuat referensi umum ke semua jenis objek, dan kelas tertentu ditetapkan pada waktu proses. Ini disebut pengikatan terlambat. Pengikatan lambat memerlukan waktu eksekusi tambahan. Ini juga membatasi kode Anda ke metode dan properti kelas yang baru-baru ini Anda tetapkan untuk itu. Ini dapat menyebabkan kesalahan run-time jika kode Anda mencoba mengakses anggota kelas yang berbeda.

Ketika Anda mengetahui kelas tertentu pada waktu kompilasi, Anda harus mendeklarasikan variabel objek menjadi kelas tersebut. Ini disebut pengikatan awal. Pengikatan awal meningkatkan performa dan menjamin akses kode Anda ke semua metode dan properti kelas tertentu. Dalam contoh deklarasi sebelumnya, jika variabel objA hanya menggunakan objek kelas System.Windows.Forms.Label, Anda harus menentukan As System.Windows.Forms.Label dalam deklarasinya.

Keuntungan Pengikatan Awal

Mendeklarasikan variabel objek sebagai kelas tertentu memberi Anda beberapa keuntungan:

  • Pemeriksaan tipe data otomatis

  • Akses terjamin ke semua anggota kelas tertentu

  • Dukungan Microsoft IntelliSense di Penyunting Kode

  • Peningkatan keterbacaan kode Anda

  • Lebih sedikit kesalahan dalam kode Anda

  • Kesalahan yang ditemukan pada waktu kompilasi bukan waktu eksekusi

  • Eksekusi kode yang lebih cepat

Akses ke Anggota Variabel Objek

Ketika Option Strict diubah On, variabel objek hanya dapat mengakses metode dan properti kelas tempat Anda mendeklarasikannya. Contoh berikut mengilustrasikan hal ini.

' Option statements must precede all other source file lines.  
Option Strict On  
' Imports statement must precede all declarations in the source file.  
Imports System.Windows.Forms  
Public Sub accessMembers()  
    Dim p As Object  
    Dim q As System.Windows.Forms.Label  
    p = New System.Windows.Forms.Label  
    q = New System.Windows.Forms.Label  
    Dim j, k As Integer  
    ' The following statement generates a compiler ERROR.  
    j = p.Left  
    ' The following statement retrieves the left edge of the label in pixels.  
    k = q.Left  
End Sub  

Dalam contoh ini, p hanya dapat menggunakan anggota kelas Object itu sendiri, yang tidak mencakup properti Left. Di sisi lain, q dideklarasikan berjenis Label, sehingga dapat menggunakan semua metode dan properti dari kelas Label di namespace System.Windows.Forms.

Fleksibilitas Variabel Objek

Saat bekerja dengan objek dalam hierarki pewarisan, Anda memiliki pilihan kelas mana yang akan digunakan untuk mendeklarasikan variabel objek Anda. Dalam membuat pilihan ini, Anda harus menyeimbangkan fleksibilitas penetapan objek terhadap akses ke anggota kelas. Misalnya, pertimbangkan hierarki warisan yang mengarah ke System.Windows.Forms.Form kelas :

Object

  MarshalByRefObject

    Component

      Control

        ScrollableControl

          ContainerControl

            Form

Misalkan aplikasi Anda mendefinisikan kelas formulir yang disebut specialForm, yang mewarisi dari kelas Form. Anda dapat mendeklarasikan variabel objek yang merujuk secara khusus ke specialForm, seperti yang ditunjukkan contoh berikut.

Public Class specialForm  
    Inherits System.Windows.Forms.Form  
    ' Insert code defining methods and properties of specialForm.  
End Class  
Dim nextForm As New specialForm  

Deklarasi dalam contoh sebelumnya membatasi variabel nextForm ke objek kelas specialForm, tetapi juga membuat semua metode dan properti specialForm tersedia untuk nextForm, serta semua anggota semua kelas tempat specialForm mewarisi.

Anda dapat membuat variabel objek lebih umum dengan mendeklarasikannya berjenis Form, seperti yang ditunjukkan contoh berikut.

Dim anyForm As System.Windows.Forms.Form  

Deklarasi dalam contoh sebelumnya memungkinkan Anda menetapkan formulir apa pun dalam aplikasi Anda ke anyForm. Namun, meskipun anyForm dapat mengakses semua anggota kelas Form, itu tidak dapat menggunakan salah satu metode atau properti tambahan yang ditentukan untuk formulir tertentu seperti specialForm.

Semua anggota kelas dasar tersedia untuk kelas turunan, tetapi anggota tambahan dari kelas turunan tidak tersedia untuk kelas dasar.

Lihat juga