Static Class Member

Kalo kita ngoding pake bahasa pemrograman yang punya fitur untuk object-oriented programming, kayaknya sih bahasa yang bersangkutan udah wajib punya fitur static class member. Untuk C++ & Java, static class member ini dideklarasiin pake keyword ‘static’ sebelum nentuin tipe data dari member yang bersangkutan.

class iniClassLoh {
public:
static int iniStaticVariable;
static int iniStaticMethod();
};

– Contoh deklarasi di C++

public class iniClassLoh {
public static int iniStaticVariable;
public static int iniStaticMethod() {
/*isi dari method harus ditulis di sini, Java nggak support prototyping soalnya*/
}
}

– Contoh deklarasi di Java

Yang ngebedain member yang static dengan yang bukan static itu lokasi penyimpanannya di alamat memory RAM. Untuk member yang bukan static, tiap object punya member itu yang disimpen di alamat memory yang beda-beda. Sementara kalo static, semua object punya member static yang sama yang disimpen di satu alamat memory yang sama. Karena alamat memorynya sama, kalo static variable punya satu object isinya diubah, static variable itu yang ada di object lainnya juga berubah.

C++ punya fitur prototyping yang sama dengan C. Kalo pake fitur ini, kita bisa ngedeklarasiin nama method dulu di dalam class & isinya ditulis belakangan. Misalnya kita punya class kayak begini.

class tesClass {
public:
int tesMethod();
};

Kita bisa bikin implementasi dari tesMethod() di luar class, cara nulisnya begini.

int tesClass::tesMethod() {
return 0;
}

Nah, buat inisialisasi nilai static variable di C++ kita harus pake cara yang mirip dengan prototyping tadi. Kalo nggak ntar bakal ada error waktu dicompile. Misalnya gw mau ngeset nilai awal static variable di class iniClassLoh tadi jadi 0, gw harus ngetik ini di luar classnya.

int iniClassLoh::iniStaticVariable = 0;

Untuk di Java, function main() harus dibuat static, & semua member dari class program utamanya yang bakal dipanggil dari main() juga harus static. Ini masalah alamat memory juga sih, kalo satu function static manggil member yang bukan static dari class itu bakal susah buat nentuin member dari object yang mana yang bakal dipake. Sementara kalo static sih udah pasti yang satu itu karena semua object manggil alamat static member yang sama.

public class MainProgram {
public static boolean _get;
public static void main (String[] args) {
_get = true;
if (_get)
getZero();
}
public static int getZero () {
return 0;
}
}

Kalo variabel _get & method getZero() di class MainProgram itu nggak dibuat static, programnya bakal error waktu dicompile. Untuk function main di Java sendiri harus dibuat public, static, ngereturn void, & nerima parameter array of string.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s