Dasar Java : Nested Class – Shadowing

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

About Reza Ervani 430 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.