Bagikan melalui


Deklarasi Variabel Objek (Visual Basic)

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

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

Saat Anda mendeklarasikan variabel dengan kelas objek tertentu, variabel dapat mengakses semua metode dan properti yang diekspos oleh kelas tersebut dan kelas asal yang diwarisi. Jika Anda mendeklarasikan variabel dengan Object, variabel hanya dapat mengakses anggota kelas Object, kecuali Anda mengubah 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 jenis data Object. Ini membuat referensi umum ke setiap jenis objek, dan kelas tertentu ditetapkan pada run time. Ini disebut pengikatan terlambat. Pengikatan terlambat memerlukan waktu eksekusi tambahan. Ini juga membatasi kode Anda ke metode dan properti kelas yang baru-baru ini Anda tetapkan untuknya. 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 deklarasi contoh sebelumnya, jika variabel objA hanya menggunakan objek kelas System.Windows.Forms.Label, Anda harus menentukan As System.Windows.Forms.Label dalam deklarasinya.

Keuntungan Pengikatan Data Awal

Mendeklarasikan variabel objek sebagai kelas tertentu memberi Anda beberapa keuntungan:

  • Pemeriksaan jenis otomatis

  • Akses terjamin ke semua anggota kelas tertentu

  • Dukungan Microsoft IntelliSense di Editor Kode

  • Peningkatan keterbacaan kode Anda

  • Lebih sedikit kesalahan dalam kode Anda

  • Kesalahan yang tertangkap pada waktu kompilasi daripada run time

  • Eksekusi kode yang lebih cepat

Akses ke Anggota Variabel Objek

Ketika Option Strict diubah menjadi On, variabel objek hanya dapat mengakses metode dan properti kelas yang Anda gunakan untuk mendeklarasikannya. Contoh berikut mengilustrasikan langkah-langkah 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 menyertakan properti Left. Di sisi lain, q telah dideklarasikan berjenis Label, sehingga dapat menggunakan semua metode dan properti 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 penugasan objek terhadap akses ke anggota kelas. Misalnya, pertimbangkan hierarki pewarisan yang mengarah ke kelas System.Windows.Forms.Form:

Object

  MarshalByRefObject

    Component

      Control

        ScrollableControl

          ContainerControl

            Form

Misalkan aplikasi Anda menentukan 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 dari semua kelas asal yang diwarisi specialForm.

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, tapi tidak dapat menggunakan metode atau properti tambahan apapun 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