Beware of "Me" and "MyClass"

Mungkin kebanyakan dari kita semua yang menggunakan VB.NET as his / her programming language sering / pernah menggunakan keyword Me dan MyClass. Namun apakah pernah mendapatkan hasil yang tidak kita inginkan dari penggunaan kedua keyword tsb? Me dan MyClass sebenarnya serupa tapi tak sama. Keyword tsb merujuk pada instance dari sebuah class yang sedang running / aktif. Tapi kalau keyword tsb di terapkan pada sebuah prosedur yang Overridable maka hasilnya akan berbeda.

Misalkan saya mempunyai dua buah class. Yang satu sebagai Base Class nya, yang kedua sebagai Child Class. Pada class yang pertama terdapat beberapa prosedur yang overridable. Dan pada class yang kedua terdapat prosedur yang Overrides prosedur di Base Class...Code nya seperti dibawah ini :

Public Class KampusITB
    Public Overridable Sub Lokasi()
        Console.Write("Bandung,")
    End Sub

    Public Overridable Sub BerdiriTahun()
        Console.Write("1920")
    End Sub

    Public Overridable Sub InfoDetail()
        Console.Write("ITB,")
        MyClass.Lokasi()
        MyClass.BerdiriTahun()
       
        Console.ReadLine()
    End Sub
End Class

Perhatikan code yang di Bold...prosedur tsb memanggil prosedur Lokasi dan BerdiriTahun dengan menggunakan keyword "MyClass"

class yang kedua :

Public Class TeknikGeofisika
    Inherits KampusITB

    Public Sub Departemen()
        Console.Write("FIKTM")
    End Sub

    Public Overrides Sub Lokasi()
        Console.Write("Jl.Ganesha 10,Bandung,")
    End Sub

    Public Overrides Sub InfoDetail()
        MyBase.InfoDetail()
    End Sub
End Class

class yang kedua ini inherits dari class yang pertama, dan Overrides beberapa prosedurnya, salah satunya yaitu prosedur InfoDetail...Ok...sekarang kita buat sebuah instance object dari class yang kedua :

Module Module1

   Sub Main()
        Dim aClass As New TeknikGeofisika
        aClass.InfoDetail()
    End Sub

End Module

hasilnya :

sekarang kita rubah code class yang pertama pada prosedur InfoDetail :

Public Overridable Sub InfoDetail()
        Console.Write("ITB,")
        Me.Lokasi()       
        MyClass.BerdiriTahun()       
        Console.ReadLine()
End Sub


keyword MyClass yang digunakan untuk memanggil prosedur Lokasi kita ganti dengan Me...sekarang kita lihat pengaruhnya...

Ada perbedaan hasil dari penggunaan keyword "Me" dengan "MyClass". Perbedaan hasil tersebut hanya akan berpengaruh pada Overriding impact saja, tanpa Overriding maka hasilnya akan sama saja. Jadi kalau kita gunakan MyClass pada sebuah overridable prosedur maka instance dari BaseClass yang memanggil prosedur tsb akan eksekusi prosedur yang terdapat di BaseClass nya...Kalau "Me" akan eksekusi prosedur yang terdapat di instance class yang bersangkutan...

Mungkin ada dari beberapa teman kita yang tidak menyadari penggunaan "Me" dan "MyClass" termasuk saya dulu Big Smile saya kira sama saja kedua keyword itu , tapi ternyata selidik punya selidik setelah di telisik... Idea

Share this post: | | | |
Published Wednesday, March 21, 2007 4:50 AM by yulian
Filed under:

Comments

# re: Beware of "Me" and "MyClass"

Wednesday, March 21, 2007 12:51 PM by muhammadsudirman

Hhhhmmm.... sample--nya keren.

Gajah duduk euy... :-)

# re: Beware of "Me" and "MyClass"

Wednesday, March 21, 2007 1:30 PM by yulian

Biar kacang gak lupa kulitnya :)

Powered by Community Server (Commercial Edition), by Telligent Systems