Scope variabel

Kebetulan dimilis jug-joglosemar ada yang bertanya tentang Scope Variabel di Java. Nah mumpung ada waktu senggang mending aku post ke blog. Scope varibel dapat dibedakan menjadi 2 yaitu: variabel yang dideklarasikan di dalam blok class dan variabel yang dideklarasikan dalam blok kode.

Variabel yang dideklarasikan dalam blog class akan dikenali oleh seluruh bagian class tsb. Bahkan variabel ini juga dapat diakses dari luar classnya tetapi tergantung dari modifiernya. Mengenai
modifier variabel akan saya jelaskan di bawah.

Variabel yang didiklarasikan di dalam blok kode tertentu, hanya akan dikenali di dalam blok kode tersebut saja. Untuk lebih jelasnya perhatikan contoh berikut:

public class Scope{
   static int x=10;
   public static void main(String[] args){
      int a = 5;
 // variabel x dapat diakses
 System.out.println("Nilai x="+x);
 System.out.println("Nilai a="+a);
 //nested blok
 {
    int b = 8;
    // variabel x masih dikenali
    System.out.println("Nilai x="+x);
           // variabel a juga dikenali
    System.out.println("Nilai a="+a);
 	   System.out.println("Nilai b="+b);
       }
 //variabel b tidak dikenali
 System.out.println("Nilai b="+b);
   }
}

Di atas saya menyebutkan bahwa variabel yang dideklarasikan di blok class dapat diatur hak aksesnya dari luar class dengan modifier, apakah variabel tsb boleh diakses atau tidak.Penggunaan modifier berfungsi untuk melakukan enkapsulasi (membungkus data) pada objeck. Dengan menggunakan modifier kita dapat menentukan siapa saja yang boleh menggunakan atau mengakses member dari suatu objek (termasuk variabel/field).

Bentuk pendeklarasiannya adalah

[modifier] [tipe data] namVariabel;

Berikut ini adalah daftar modifier yang dapat digunakan:

  1. Default (tanpa modifier), visible atau dapat diakses hanya dari class lain dengan package yang sama.
  2. public, visible dari semua class
  3. private, visible hanya di dalam class itu sendiri
  4. protected, visible dari class lain dengan package yang sama dan dari subclassnya.

Contoh:

package com;
class A{
    int a;               //defult, dapat diakes oleh class A sendiri dan class B
    private int b;   //private, hanya dapat diakses oleh class A
    public int c;     //public, dapat diakses oleh class A,B,C dan D
    protected int d; //protected, dapat diakses oleh class A,B dan D
}

package com;
class B{
}

package org;
class C{
}

package other;
class D extends A{
}

Demikian sedikit tentang scope variabel di Java.

Semoga bermanfaat.