Dragonica Emoticon Sparkly Eye
3 Des 2011

STATIC vs FINAL

1. Static (satu-satunya*)
Selama ini, yang kita ketahui adalah suatu variabel atau method diasosiasikan dan diakses melalui suatu instance dari kelas. Nah, sekarang, kita akan belajar tentang hal yang lain, yaitu static modifier yang hidup dalam kelas itu sendiri dan dishare ke seluruh instance dari kelas tersebut. (Pat Niemeyer,Jonathan Knudsen,Learning JavaTM, 2nd Edition, Chapter 5). (semua instance dari class yang sama mempunyai atribut / method yang bersifat milik bersama)(Unknown, *,Pemrograman Berbasis Obyek, “Advanced Class Features I”, 34 ). Variabel yang dideklarasikan static disebut sebagai variabel static atau variabel class. Begitupun juga terhadap method, disebut method static atau method kelas. Modifier static digunakan untuk variabel, method, dan inner class (tentang inner class akan dibahas lebih lanjut ☺).




Contoh :
class Sepeda{
//atribut static diinisialisasi...
static int jmlRoda = 2;
}
Sekarang, kita coba tampilkan member static tersebut…
class TesStatic{
public static void main(String args[]){
//instansiasi pertama :)
Sepeda motor = new Sepeda();
motor.jmlRoda =2;
System.out.println("Jumlah Roda Motor = "+motor.jmlRoda);
//instansiasi kedua :)
Sepeda becak = new Sepeda();
becak.jmlRoda = 3;
System.out.println("Jumlah Roda Becak = "+becak.jmlRoda);
// apa yang terjadi ketika objek motor dipanggil lagi ...
System.out.println("Jreng..jreng...,apa yang terjadi pada jumlah roda motor...");
System.out.println("Jumlah Roda Motor = "+motor.jmlRoda);
}
}



Jika kita Compile dan Run, hasilnya akan seperti ini :
F:\data samson\My Dedication\kumpulanmodul\Java>javac TesStatic.java
F:\data samson\My Dedication\kumpulanmodul\Java>java TesStatic
Jumlah Roda Motor = 2
Jumlah Roda Becak = 3
Jreng..jreng...,apa yang terjadi pada jumlah roda motor...
Jumlah Roda Motor = 3
Dari hasil di atas terlihat bahwa atribut jmlRoda dari objek motor berubah menjadi 3, karena jmlRoda telah diubah menjadi 3 oleh objek becak, dari sini jelas bahwa dengan adanya modifier static, berarti member itu milik kelas. Yang dimaksud static itu satu-satunya* bukan berarti kita hanya bisa mendeklarasikan satu member static, tapi karena apabila terjadi perubahan pada member suatu kelas, maka itu akan berlaku pada semua instance yang ada.
Ada satu hal lain lagi tentang member static, yaitu kita bisa saja memanggil member static tanpa harus menginstansiasi dulu, contoh :
class TesStatic2 {
public static void main(String args[]){
//memanggil langsung ke atributnya...
Sepeda.jmlRoda = 2;
System.out.println("Jumlah roda sepeda = "+Sepeda.jmlRoda);
}
}


2. Final (tidak berubah)
Keyword Final bisa berlaku di class, variabel, maupun method. Jika ia menempel pada class, maka ia tidak bisa dibuat subclass, jika pada method, tidak bisa dioverride, jika pada variabel, maka bersifat konstan.
Contoh pada variabel:

class Hitung{
final double phi = 3.14;
int jari2;
Hitung(int jari2){
this.jari2 = jari2;
}
double Luas(){
return jari2*phi;
}
public static void main(String args[]){
Hitung lingkaran = new Hitung(7);
////iilllleeggaall aacccceessss......
lliinnggkkaarraann..pphhii == 33..1155;; ////iilllleeggaall......
System.out.println(lingkaran.Luas());
}
}

Jika kita compile, maka akan tampil pesan kesalahan :
F:\data samson\My Dedication\kumpulanmodul\Java>javac Hitung.java
Hitung.java:12: cannot assign a value to final variable phi
lingkaran.phi = 3.15; //illegal...
^
1 error
Dari sini jelas bahwa variabel yang diberi nilai final bersifat konstan, tidak boleh dan tidak bisa berubah.
Contoh pada class :
final class Tiang{
int tinggi;
}
class Tower extends Tiang{
}

Class Tiang mempunyai modifier final, jadi tidak bisa dibuat subclass, dan jika kita memaksa untuk melakukan pewarisan seperti di atas, maka akan terjadi pesan kesalahan :
F:\data samson\My Dedication\kumpulanmodul\Java>javac Tower.java
Tower.java:5: cannot inherit from final Tiang
class Tower extends Tiang{
^
1 error

Terimakasih..

0 komentar:

Posting Komentar

 
;