Mengapa kelas repositori memiliki banyak atribut static?
Kelas Repositori
Kelas repositori adalah kelas yang berfungsi sebagai penyimpanan informasi dalam suatu sistem. Contoh sederhana dari kelas repositori pada Java adalah kelas Math. Kelas Math memiliki dua atribut, yaitu E (menyimpan basis logaritma natural) dan PI (menyimpan nilai dari π ), dan kedua atribut kelas Math tersebut bersifat static.
Mengapa atribut kelas repositori bersifat static?
Untuk menjawab pertanyaan ini kita perlu mengkaji kegunaan parameter static pada Java. Jika sebuah atribut (ataupun method) dideklarasikan sebagai static, maka atribut tersebut tidak terikat pada suatu objek tertentu, tetapi terikat pada kelas yang diinstansiasikan dalam bentuk objek. Atribut static juga dialokasikan ketika kelas yang bersangkutan di-load, bukan ketika objek dari kelas tersebut dibuat.
Apa perbedaannya? Jadi, jika sebuat objek kelas dengan atribut biasa kita buat, maka nilai dari atribut tersebut akan selalu diberikan nilai baru/default. Lain halnya dengan kelas berisi atribut static, karena terikat kepada kelas, bukan objek, maka ketika kita membuat objek baru, maka nilai dari atribut dari objek tidak mengikuti nilai default, tetapi nilai atribut yang telah ada. Untuk lebih jelasnya bias dilihat dari contoh.
Program contoh:
public class StaticVariable{
static int noOfInstances;
StaticVariable(){
noOfInstances++;
}
public static void main(String[] args){
StaticVariable sv1 = new StaticVariable();
System.out.println("No. of instances for sv1 : " + sv1.noOfInstances);
StaticVariable sv2 = new StaticVariable();
System.out.println("No. of instances for sv1 : " + sv1.noOfInstances);
System.out.println("No. of instances for st2 : " + sv2.noOfInstances);
StaticVariable sv3 = new StaticVariable();
System.out.println("No. of instances for sv1 : " + sv1.noOfInstances);
System.out.println("No. of instances for sv2 : " + sv2.noOfInstances);
System.out.println("No. of instances for sv3 : " + sv3.noOfInstances);
}
}
Output dari program:
C:\java>java StaticVariable
No. of instances for sv1 : 1
No. of instances for sv1 : 2
No. of instances for st2 : 2
No. of instances for sv1 : 3
No. of instances for sv2 : 3
No. of instances for sv3 : 3
Bisa dilihat pada hasil output, bahwa nilai dari atribut StaticVariable tidak mengikuti dari pembuatan objek, tetapi dari pembuatan kelas. Sehingga nilai StaticVariable pada sv1, sv2, dan sv3 selalu sama walaupun mereka adalah objek yang berbeda.
Kesimpulan
Kembali kepada permasalahan awal mengenai kegunaan atribut static pada kelas repositori, dapat diambil kesimpulan bahwa, alasan penggunaan atribut static adalah demi keseragaman nilai dari atribut kelas repositori tersebut, Sehingga, walalupun perubahan nilai atribut dilakukan oleh objek yang telah hilang karena masuk garbage collector, nilai dari atribut kelas tetap ada dan valid.
Mengapa method main pada program Java selalu bersifat static?
Method pada Java
Pada Java, agar sebuah method dapat diakses, harus melewati beberapa prosedur terlebih dahulu. Pertama-tama, method harus merupakan bagian dari sebuah kelas, dan yang kedua agar bisa diakses, maka objek dari kelas yang mengandung method tersebut harus diinstansiasi. Setelah dua tahap ini, maka method tersebut bisa kita akses dengan cara memanggil:
Objek.method(parameter1, parameter2);
Pengecualian untuk method main
Pada method main, hal ini menjadi masalah, karena jika suatu program Java dijalankan, maka yang pertama kali berjalan adalah method main, tanpa ada instansiasi dari objek apapun terlebih dahulu. Hal ini diatasi dengan menjadikan main sebagai method static. Dengan adanya embel-embel static, berarti method main tidak terikat pada suatu objek tertentu untuk diakses, sehingga langkah kedua yang telah disebutkan bisa dilewati.
Sumber: