PROGRAMMING #14 : Java Programming for Programmer - Classes and Objects (PART 9) | [BAHASA]
Pada artikel ini merupakan lanjutan dari artikel sebelumnya yaitu Java Programming for Programmer - Classes and Objects (PART 8). Masih dalam topik yang sama, dimana saya akan membahas mengenai kelas dan objek. Langsung saja pada pokok pembahasan berikut ini.
Anggota-anggota Static Suatu Kelas
Setiap objek memiliki salinan sendiri atas semua variabel contoh kelas. Pada beberapa kasus, hanya satu salinan dari variabel tertentu yang harus dipakai secara bersama oleh semua objek suatu kelas. Suatu bidang data static, disebut dengan variabel kelas, digunakan pada kasus semacam itu. Variabel static merepresentasikan informasi kelas, dimana semua objek kelas memakai secara bersama variabel itu. Deklarasi atau suatu variabel static dimulai dengan kata kunci static.
Variabel static memiliki skop kelas. Anda dapat mengakses anggota-anggota public static suatu kelas melalui suatu referensi kepada sembarang objek dari kelas tersebut atau lewat penspesifikasian nama anggota dengan nama kelas dan titik (.), seperti Math.random(). Anggota private static suatu kelas dapat diakses oleh kode klien hanya melalui metode-metode kelas itu. Pada hakikatnya, anggota static suatu kelas memiliki eksistensi, bahkan ketika tidak ada objek dari kelas tersebut yang diciptakan. Anggota static tersedia begitu kelas ditempatkan ke dalam memori pada waktu eksekusi. Untuk mengakses suatu anggota public static ketika tidak ada objek kelas yang tercipta, digunakan prefiks nama kelas dan titik (.), seperti Math.PI. Untuk mengakses suatu anggota private static ketika tidak ada objek kelas yang tercipta, anda harus menyediakan suatu metode public static dan memanggilnya dengan menspesifikasi namanya dengan nama kelas dan titik (.).
Suatu metode static tidak dapat mengakses anggota-anggota non-static suatu kelas, karena metode static dapat dipanggil meski ketika tidak ada objek kelas tercipta. Karena alasan yang sama, referensi this tidak dapat digunakan didalam suatu metode static. Referensi this harus menunjuk kepada suatu objek spesifik suatu kelas, dan ketika suatu metode static dipanggil, bisa jadi tidak ada atau belum ada objek dari kelas itu didalam memori.
Menjejak Jumlah Objek Karyawan yang Tercipta
Pada contoh selanjutnya, dideklarasikan dua kelas yakni Karyawan2 (kode 1.12) dan UjiKaryawan2 (kode 1.13). Kelas Karyawan2 mendeklarasikan variabel private static, hitung, (kode 1.12, baris 12) dan metode public static, getHitung (baris 36-39). Variabel static, hitung, diinisialisasi dengan nol pada baris 9. Jika suatu variabel static tidak diinisialisasi, penyusun akan menugaskan nilai default, dalam kasus ini 0, nilai default untuk yang bertipe int. Variabel hitung menghitung jumlah objek dari kelas Karyawan2 yang telah diciptakan sejauh ini.
Ketika objek Karyawan2 diciptakan dan eksis, variabel hitung dapat digunakan didalam sembarang metode dari objek Karyawan2. Contoh ini menginkremen hitung didalam konstruktor (baris 18). Metode public static, getHitung, pada baris 36-39 menghasilkan nilai balik merupakan jumlah objek Karyawan2 yang telah diciptakan sejauh ini. Ketika tidak ada objek dari kelas Karyawan2 yang diciptakan, kode klien dapat mengakses variabel hitung dengan memanggil metode getHitung melalui nama kelas, seperti Karyawan2.getHitung(). Ketika objek dari kelas Karyawan2 eksis, metode getHitung dapat juga dipanggil melalui sembarang referensi yang menunjuk kepada suatu objek Karyawan2.
Kode 1.12
Metode main pada kelas UjiKaryawan2 (kode 1.13) mencontohkan dua objek Karyawan2 (baris 13-14). Ketika konsturktor tiap objek Karyawan2 dipanggil, baris 15-16 pada kode 1.12 menugaskan nama pertama dan nama terakhir Karyawan2 kepada variabel contoh namaPertama dan namaAkhir. Kedua pernyataan tersebut tidak membuat salinan atas argumen String yang asli. Sebenarnya, objek-objek String dalam Java bersifat immutable, karena tidak bisa dimodifikasi setelah diciptakan. Oleh karena itu, ada hal yang aman untuk memiliki banyak referensi yang menunjuk kepada suatu objek String. Jika objek String immutable, anda mungkin bertanya mengapa anda bisa menggunakan operator + dan += untuk menyambung dua objek String. Operasi penyambungan String sebenarnya menghasilkan suatu objek String baru yang memuat String hasil penyambungan. Objek-objek String yang asli tidak termodifikasi.
Ketika main telah selesai menggunakan dua objek Karyawan2, referensi e1 dan e2 ditetapkan menjadi null pada baris 31-32. Pada titik ini, referensi e1 dan e2 tidak lagi menunjuk kepada objek-objek yang dicontohkan pada baris 13-14. Objek-objek tersebut akan dihapus oleh penyusun Java karena tidak ada lagi referensi yang menunjuk kepada keduanya didalam program.