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