Oleh : Reza Ervani
بسم الله الرحمن الرحيم
Jika sudah inner class mendeklarasikan field atau metode dengan nama yang sama dengan nama field atau metode yang ada di class yang menaunginya, maka field atau metode inner class itu membayangi/shadow field atau metode penaungnya. Berikut contohnya
public class Outer { private String text = "I am Outer private!"; public class Inner { private String text = "I am Inner private"; public void printText() { System.out.println(text); } } }
Pada contoh diatas baik class Outer
maupun Inner
berisi suatu field yang bernama text
. Saat class Inner
merujuk ke text,
maka ia merujuk ke field-nya sendiri. Saat Outer
merujuk ke text
dia juga merujuk ke field-nya sendiri.
Adalah dimungkinkan untuk class Inner
merujuk ke field text
di class outer. Untuk melakukan hal tersebut, dia harus memberikan prefix pada field text
yang mereferensikan field di class outer dengan sintak Outer.this.
seperti pada contoh berikut :
public class Outer { private String text = "I am Outer private!"; public class Inner { private String text = "I am Inner private"; public void printText() { System.out.println(text); System.out.println(Outer.this.text); } } }
Pada keadaan diatas metode Inner.printText()
akan mengeluarkan output kedua field baik itu Inner.text
dan Outer.text
Leave a Reply