Apakah mendeklarasikan variabel private static varName;
berbeda dengan mendeklarasikan variabel private varName;
?
Ya, keduanya berbeda. Dan yang pertama disebut class variable
karena memiliki nilai tunggal untuk itu class
sedangkan yang lain disebut instance variable
karena dapat memiliki nilai yang berbeda untuk yang berbeda instances(Objects)
. Yang pertama dibuat hanya satu kali dalam jvm dan yang lain dibuat sekali per instance yaitu jika Anda memiliki 10 instance maka Anda akan memiliki 10 berbeda private varName;
dalam jvm.
Apakah mendeklarasikan variabel sebagai static
memberikannya properti khusus lainnya?
Ya, variabel statis mendapatkan beberapa properti yang berbeda dari variabel instance normal. Saya sudah menyebutkan beberapa dan mari kita lihat beberapa di sini: class variables
(variabel instan yang dinyatakan sebagai statis) dapat diakses langsung dengan menggunakan nama kelas seperti ClassName.varName
. Dan objek apa pun dari kelas itu dapat mengakses dan mengubah nilainya, tidak seperti variabel instan diakses hanya oleh objeknya masing-masing. Variabel kelas dapat digunakan dalam metode statis.
Apa gunanya a private static variable
di Jawa?
Logikanya, private static variable
tidak ada bedanya public static variable
dengan yang pertama memberi Anda lebih banyak kontrol. IMO, Anda benar-benar dapat mengganti public static variable
dengan private static variable
dengan bantuan public static
getter dan setter metode.
Satu area yang banyak digunakan private static variable
adalah dalam penerapan Singleton
pola sederhana di mana Anda hanya akan memiliki satu instance dari kelas itu di seluruh dunia. Di sini static
pengidentifikasi memainkan peran penting untuk membuat satu instance dapat diakses oleh dunia luar (Tentu saja metode pengambil statis publik juga memainkan peran utama).
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}