Pages

Jumat, 09 Desember 2011

Final Vs. Static

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 Java
TM
, 2
nd
 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); 
    
//illegal access...
lingkaran.phi = 3.15; //illegal...
  
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

0 komentar:

Posting Komentar

 

(c)2009 PD-Child. Based in Wordpress by wpthemesfree Created by Templates for Blogger