Variabel Kelas (Static Variable)

Jika variabel obyek (instance variable) membawa harga yang berlaku hanya pada obyek itu saja, misalnya x, y, r dalam kelas Lingkaran bisa berbeda dari satu obyek ke obyek lain, maka Variabel Kelas (Class Variable) membawa harga yang berlaku untuk setiap obyek dari kelas tersebut. Variabel Kelas disebut juga Static Varible karena menggunakan keyword static. Contoh Variabel Kelas
public class Lingkaran {
static int jmlLingkaran = 0;
public double x, y, r;
public Lingkaran(double x, double y, double r){
this.x = x; this.y = y; this.r = r;
jmlLingkaran++;
}
public Lingkaran(Lingkaran L){
this(L.x,L.y,L.r);}
public Lingkaran(double r){this(0,0,r);}
public Lingkaran(){this(0,0,0);}
….
Jika variabel Obyek diakses melalui nama variabel yang me-refer-nya maka variabel kelas diakses melalui nama kelasnya
System.out.println(“Jari-jari: ” + c1.r);
// r adalah variabel obyek
System.out.println(“Sudah ada: ” + Lingkaran.jmlLingkaran+” lingkaran”);
// jml_lingkaran adalah variabel kelas
Metoda Kelas (Class method)

Metoda Kelas (disebut juga Static Method) adalah metoda yang dimiliki oleh kelas tanpa memperhatikan ada/tidaknya obyek dari kelas tersebut. Biasanya untuk fungsi-fungsi library. Metoda kelas diakses melalui nama kelasnya bukan dari obyeknya. Contohnya pemanggilan Math.sqrt() dalam coding berikut ini adalah memanggil mtoda sqrt() dalam kelas Math.
public class Lingkaran {
public double x, y, r;
public boolean diDalam(double a, double b){
double dx = a – x; double dy = b – y;
double jarak = Math.sqrt(dx*dx + dy*dy);
if (jarak < r) return true;
else return false;
}
….
}

Note: Kelas Math merupakan library yang berisikan banyak metoda penghitungan matematika.

Hal yang penting diingat bahwa definisi metoda kelas tidak bisa menggunakan referensi implisit this di dalamnya (mengapa? Karena bukan milik obyek dan this adalah alias dari obyek ybs.!). Berikut ini ada dua metoda dalam kelas Lingkaran tapi yang satu adalah metoda obyek (“manakah yang lebih besar antara apakah suatu Lingkaran tertentu dengan dirinya”) dan yang kedua adalah metoda kelas (“manakah yang lebih besar antara suatu lingkaran dengan Lingkaran lain”).
public class Lingkaran {
public double x, y, r;
public Lingkaran lbhBesar(Lingkaran c){
if (c.r > this.r) return c; else return this;
}
public static Lingkaran lbhBesar(Lingkaran a,
Lingkaran b){
if (a.r > b.r) return a; else return b;
}
….
}

Selain dengan konstruktor variabel obyek dapat dapat diinisialisasi dengan assignment pada bagian deklarasinya:

double r = 1.0;

Sementara untuk menginisialisasi suatu Variabel Kelas kita tidak bisa menggunakan konstruktor tapi dapat dilakukan dengan static initializer. Static initializer dijalankan saat kelas pertama kali diakses/di-load. Deklarasi Static initializer tidak perlu nama, argumen, dan return value. Contoh Static Initializer

Static initializer sederhana
static int jml_lingkaran = 0;
Static initializer yang lebih kompleks
public class circle {
static private double sinusTbl[]=new double[180];
static {
double x;
for (int i=0; i < 180; i++)
sinusTbl[i] = Math.sin(i*3.14159/180);
}
….
}

baca lainya……..>>>>

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

%d bloggers like this: