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 :
1: Public Class KampusITB
2: Public Overridable Sub Lokasi()
3: Console.Write("Bandung,")
4: End Sub
5:
6: Public Overridable Sub BerdiriTahun()
7: Console.Write("1920")
8: End Sub
9:
10: Public Overridable Sub InfoDetail()
11: Console.Write("ITB,")
12: MyClass.Lokasi()
13: MyClass.BerdiriTahun()
14: Console.ReadLine()
15: End Sub
16: End Class
Perhatikan code di atas...prosedur tsb memanggil prosedur Lokasi dan BerdiriTahun dengan menggunakan keyword "MyClass"
class yang kedua :
1: Public Class TeknikGeofisika
2: Inherits KampusITB
3:
4: Public Sub Departemen()
5: Console.Write("FIKTM")
6: End Sub
7:
8: Public Overrides Sub Lokasi()
9: Console.Write("Jl.Ganesha 10,Bandung,")
10: End Sub
11:
12: Public Overrides Sub InfoDetail()
13: MyBase.InfoDetail()
14: End Sub
15: 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 :
1: Module Module1
2:
3: Sub Main()
4: Dim aClass As New TeknikGeofisika
5: aClass.InfoDetail()
6: End Sub
7:
8: End Module
hasilnya :

sekarang kita rubah code class yang pertama pada prosedur InfoDetail :
1: Public Overridable Sub InfoDetail()
2: Console.Write("ITB,")
3: Me.Lokasi()
4: MyClass.BerdiriTahun()
5: Console.ReadLine()
6: 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
saya kira sama saja kedua keyword itu , tapi ternyata selidik punya selidik setelah di telisik... 