Mengontrol Hak Akses Anggota Class (Access Modifiers)

Java menyediakan beberapa tipe hak akses untuk class, variable, method dan constructor. Hak akses tersebut dapat di lihat pada tabel berikut ini :

Hak Akses (Access Modifier)
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N

Public Access Modifier – public

Sebuah class, variable, method dan constructor yang dideklarasikan public dapat di akses dari class manapun. Walaupun demikian, sebuah class yang dideklarasikan public namun berbeda package, maka class public tersebut harus di import terlebih dahulu. Bila belum mengerti konsep package silahkan baca Penjelasan Mengenai Package pada Java.

Protected Access Modifier – protected

Variable, method dan constructor yang dideklarasikan protected akan dapat diakses oleh subclass atau class yang berada dalam 1 package. Hak access protected tidak bisa diterapkan pada class, interface dan juga terhadap variable dan method yang terdapat pada interface.

Untuk lebih jelasnya perhatikan contoh kode berikut ini:

package binatang;

public class Ikan {
    public int mata;
    protected int sirip;
    protected int panjang;
    
    public Ikan(){
        mata=2;
        sirip=5;
        panjang=10;
    }
    
    protected String bernafas(){
        String s = "Bernafas dengan insang";
        return s;
    }
    protected String berenang(){
        String s = "Berenang dengan siripnya";
        return s;
    }
}

Terlihat pada kode 1 variable dideklarasikan public dan 2 variable dideklarasikan protected. Kode berikut ini akan memanggil class ikan dari luar packagenya.

import binatang.Ikan;
public class IkanBedaPackage {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Ikan i = new Ikan();
        //variabel mata bisa dipanggil karena hak aksesnya public
        System.out.println ("Mata ikan="+i.mata);
        //variabel sirip tidak bisa dipanggil karena hak aksesnya protected
        System.out.println ("Sirip ikan="+i.sirip);
    }
}

Pada class IkanBedaPackage akan terjadi error pada kode :

System.out.println ("Sirip ikan="+i.sirip);

Dikarenakan hak akes dari variable sirip adalah protected. Berikut ini contoh kode yang memanggil class ikan dari package yang sama:

package binatang;

public class IkanSamaPackage {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Ikan i = new Ikan();
        //variabel mata bisa dipanggil karena hak aksesnya public
        System.out.println ("Mata ikan="+i.mata);
        //variabel sirip bisa dipanggil karena 1 package
        System.out.println ("Sirip ikan="+i.sirip);
        //Method berenang pun bisa dipanggil
        System.out.println (i.berenang());
    }
}

Pada class IkanSamaPackage semua variable dan method dari class Ikan bisa diakes, karena berada dalam package yang sama. Berikut ini contoh kode variable dan method dari class Ikan diakses oleh turunannya.

import binatang.Ikan;
public class IkanTurunan extends Ikan {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        IkanTurunan it = new IkanTurunan();
        //variabel mata bisa dipanggil karena hak aksesnya public
        System.out.println ("Mata ikan="+it.mata);
        //variabel sirip bisa dipanggil karena dipanggil class turunannya.
        System.out.println ("Sirip ikan="+it.sirip);
        //Method berenang pun bisa dipanggil
        System.out.println (it.berenang());
    }
}

Pada class IkanTurunan semua variable dan method dari class Ikan bisa diakes, karena merupakan turunannya.

1 Trackbacks & Pingbacks

  1. Penjelasan Mengenai Package Pada Java | Onestring Lab

Comments are closed.