Rabu, 26 Juni 2013

THIS

Ditinjau dari kepemilikannya, variabel terbagi menjadi 2, yaitu : Variabel kelas dan Variabel Instans.
Variabel kelas adalah variabel yang melekat pada kelas dan tidak terpengaruh oleh proses instantiasi, sehingga
tidak dapat dimiliki dan diakses oleh objek yang diinstans dari kelas tersebut. Variabel instans adalah variabel
yang dimiliki oleh objek dari proses intantiasi suatu kelas.
Variable This digunakan untuk mengakses variabel instans dari masing-masing objek. This sebenarnya
adalah sebuah variable read-only (tidak dapat diubah nilainya). Dengan variable ini, akan didapatkan
reference/pointer menuju objek terkini. Misalkan sebuah aplikasi sedang berjalan, pada saat tertentu yang
dijalankan oleh komputer adalah method aMethod() milik object anObject. Dari method aMethod() dibutuhkan
reference ke objek terkini yaitu object anObject itu sendiri. Untuk itulah digunakan variabel this dalam method
aMethod() milik object anObject. Perhatikan contoh berikut :
1. public class BeavisAndButtheadStory {
2. public static void main (String[] args) {
3. DivineBeing beavis = new DivineBeing ("Beavis");
4. DivineBeing butthead = new DivineBeing ("Butthead");
5. //Guess what's gonna happen next...
6. beavis.messWith(butthead);
7. butthead.makeRevenge();}
8. }
9.
10. class DivineBeing {
11. private String name;
12. private DivineBeing baddDivineBeing;
13.
14. public DivineBeing(String name) {
15. this.name = name; }
16.
17. public void messWith(DivineBeing anotherDivineBeing) {
18. System.out.println(this.getName() + " Mess With " + anotherDivineBeing.getName());
19. anotherDivineBeing.kapow(this); }
20.
21. public void kapow(DivineBeing baddDivineBeing) {
22. System.out.println(baddDivineBeing.getName() + " : Damn You !!!" + this.getName());
23. //forgive but not forget....
24. this.baddDivineBeing = baddDivineBeing; }
25.
26. public void makeRevenge() {
27. if (baddDivineBeing != null) {
28. System.out.println(this.getName() + " Make Revenge To " + baddDivineBeing.getName());
29. baddDivineBeing.kapow(this); }
30. }
31.
32. public String getName() {
33. return name; }
34. }
Gambar 4.Contoh penggunaan kata kunci this
Output :
Beavis Mess With Butthead
Beavis : Damn You!!! Butthead
Butthead Make Revenge To Beavis
Butthead : Damn You!!! Beavis
beavis memulai gara-gara dengan memukul butthead (pada baris 6 & 19), Sewaktu beavis memukul
butthead, beavis memberikan butthead referensi atas dirinya sendiri dengan memberikan argument this pada
pemanggilan method kapow(divineBeing baddDivineBeing). Dengan reference yang didapatkan, suatu saat
butthead dapat balik mengirim pesan makeRevenge() ke beavis. butthead ingat betul siapa yang memukulnya,
karena sewaktu ia dipukul, ia menyimpan reference ke objek beavis itu pada variabel baddDivineBeing miliknya
PBO/Ayuliana/Revisi 2009
2
(yang dideklarasikan pada baris 13). Praktek diatas disebut CALLBACK. Programmer OOP sering
menggunakan Cara-cara diatas dalam merancang aplikasi dimana objek-objek saling terkait erat (interlocked)
satu dengan yang lain.
Penggunaan lain dari this dapat dilihat pada baris 15 dan 23. Pada baris 15, bermaksud menetapkan
variabel name yang di deklarasikan pada baris 12, tapi sekarang timbul konflik dalam penamaan variabel.
Didalam daftar argumen pada constructor juga didefinisikan variabel lain yang juga bernama name (baris 14).
Jangkauan variabel name pada baris 12 mencakup semua ruang pada class DivineBeing, sedangkan variabel
name pada baris 14 mempunyai jangkauan terbatas didalam constructor itu. Untuk mengatakan saya
menginginkan name yang global bukan name yang lokal, harus menerobos keluar dengan keyword this.

Tidak ada komentar:

Posting Komentar