Variabel Shadowing di Java

Variabel shadowing terjadi jika kita membuat variabel di scope/blok padahal sudah dibuat variabel dengan nama yang sama yang berada di atas scope tersebut. Saat terjadi hal tersebut maka secara otomatis variabel di scope di atasnya tidak bisa diakses. Perhatikan sintaks berikut ini:

public class Biodata {
    //buat field nama dan hoby
    String nama;
    String hoby;

    //kita buat constructor dengan parameter paramNama dan paramHoby
    Biodata(String paramNama, String paramHoby){
        nama = paramNama; //tidak terjadi variable shadowing
        hoby = paramHoby; //tidak terjadi variable shadowing
    }
}

Lalu bagaimana dengan yang ini?:

public class Biodata {
    //buat field nama dan hoby
    String nama;
    String hoby;

    //kita buat constructor dengan parameter paramNama dan paramHoby
    Biodata(String nama, String hoby){
        nama = nama; //terjadi variable shadowing, artinya nama disini tidak lagi mengacu ke field nama di atas tapi mengacu ke argument pada constructor Biodata
        hoby = hoby; //terjadi variable shadowing
    }
}

Jadi yang ingin disampaikan adalah hati-hati dalam membuat parameter di constructor maupun di method, jangan sampai namanya sama dengan field yang dibuat di dalam class tersebut.

 

PREVIOUS: Constructor Overloading
NEXT: This keyword

KE DAFTAR ISI

 

Leave a Reply

Your email address will not be published. Required fields are marked *