Mengenal Access Modifier pada Java


Assalmualaikum Warahmatullahi Wabarakatuh.

Access Modifier adalah sebuah “hak akses” yang diberikan kepada variabel, method atau class yang bertujuan untuk menjaga integritas dari data ketika ingin diakses oleh object lain. Hak akses tersebut diberikan oleh si pembuat program. Dengan adanya Access Modifier, kita dapat membatasi resource-resource mana saja yang dapat diakses oleh object tertentu, turunannya, ataupun oleh method tertentu.

Cara Menggunakan Access Modifier pada Java

Pada bahasa pemrograman java, terdapat 4 jenis modifier yang bisa kalian gunakan untuk variabel, method dan class, berikut ini merupakan tabel yang menjelaskan secara singkat jenis dan tingkat hak akses pada modifier tersebut:
Modifier Class Package Subclass World
No Modifier Y (Dapat Diakses) Y (Dapat Diakses) N (Tidak Dapat Diakses) N (Tidak Dapat Diakses)
public Y (Dapat Diakses) Y (Dapat Diakses) Y (Dapat Diakses) Y (Dapat Diakses)
protected Y (Dapat Diakses) Y (Dapat Diakses) Y (Dapat Diakses) N (Tidak Dapat Diakses)
private Y (Dapat Diakses) N (Tidak Dapat Diakses) N (Tidak Dapat Diakses) N (Tidak Dapat Diakses)
Materi Lainnya Yang Direkomendasikan:

Untuk persiapan, buatlah 2 buah package yang berbeda, didalam masing-masing package tersebut buat sebuah class, seperti pada gambar berikut ini:

Persiapan package dan class

A. No Access Modifier

Sesuai dengan namanya, modifier jenis ini tidak perlu dituliskan pada variable/method/class, jika menggunakan modifier jenis ini, variable/method/class dapat diakses oleh objek atau class lain asalkan didalam satu package yang sama.

Untuk contoh yang pertama, buka class mobil.java pada package Kendaraan. didalam class tersebut akan kita tambahkan sebuah baru bernama mesin, dimana class mobil dapat memanggil class mesin pada package yang sama.

package Kendaraan;

class mesin{
    
    double kecepatan;
    
    void setKecepatan(double kecepatan){
        this.kecepatan = kecepatan;
    }
    
    double getKecepatan(){
        return kecepatan;
    }
}

public class mobil{
    public static void main(String[] args){
        //Membuat Objek dari Class Mesin
        mesin data = new mesin();
        data.setKecepatan(360.0);
        System.out.println("Kecepatan Mobil: "+data.getKecepatan()+" Km/Jam");
    }
}

Demo:

Contoh Hak Akses No Modifier pada Java

Jika class mesin kalian pidahkan pada package lain atau berada diluar package Kendaraan, maka akan terjadi error.

B. Modifier Public

Hak Akses public digunakan pada class/variable/method/konstuktor, agar dapat diakses oleh seluruh class didalam package yang sama atau diluar package yang berbeda, modifier jenis ini memiliki tingkat akses yang sangat luas, hingga seluru sumber daya dapat diakses oleh class manapun tanpa batasan.

Untuk contoh kali ini, kita akan mewariskan sifat-sifat dari class mobil pada class Manusia, kedua class tersebut berada didalam package yang berbdeda, karena menggunakan public, data-data dari class mobil dapat diwariskan pada class Manusia.

Buka class mobil.java pada project kalian, didalam class tersebut kita tidak akan menggunakan method main, lalu masukan beberpa atribut pendukung seperti variable dan method.

package Kendaraan;

public class mobil{
    
    public String merek;
    public double speed;
   
    public void setMerek(String merek){
        this.merek = merek;
    }
    public void setSpeed(int speed){
        this.speed = speed;
    }
    
    public String getMerek(){
        return merek;
    }
    public double getSpeed(){
        return speed;
    }
}

Selanjutnya buka class Manusia.java, class tersebut mewarisi sifat-sifat dari class mobil dan akan dijalankan pada method main didalam class Manusia.

package Mahluk_Hidup;

//Mewarisi Sifat-Sifat dari Class Mobil didalam Package Yang Berbeda
public class Manusia extends Kendaraan.mobil{
    public static void main(String[] args){
        //Membuat Instance/Objek dari Class Manusia
        Manusia data = new Manusia();
        data.setMerek("SUZUKI");
        data.setSpeed(280.0);
        System.out.println("Saya Mempunyai Mobil "+data.getMerek());
        System.out.println("Dengan Kecepatan "+data.getSpeed()+" Km/jam");
    }
}

Demo:

Penggunaan Modifier Public pada Java

C. Modifier Protected

Variable, Method atau konstruktor yang dideklarasikan protected dapat diakses oleh subclass atau class lain asalkan didalam satu package yang sama, contohnya seperti pada gambar dibawah ini:

2 buah class didlaam package yang sama

Perlu kalian ketahui hak access protected tidak bisa diterapkan pada class, interface dan juga terhadap variable dan method yang terdapat didalam interface.

Pada class Hewan.java, masukan beberapa atribut berikut ini:

package Mahluk_Hidup;

public class Hewan {
    
    protected String makanan = "Daging dan Ikan";
    protected boolean hidup;
    
    protected void setHidup(boolean hidup){
        this.hidup = hidup;
    }
    protected boolean getHidup(){
        return hidup;
    }
}

Selanjitnya buka class Manusia.java, class tersebut mewarisi sifat-sifat dari class Hewan.

package Mahluk_Hidup;

public class Manusia extends Hewan{
    public static void main(String[] args){
        Manusia data = new Manusia();
        data.setHidup(true);
        System.out.println("Makanan Saya: "+data.makanan);
        System.out.println("Saya Hidup: "+data.getHidup());
    }
}

Demo:

Penggunaan Modifier Protected pada Java

D. Modifier Private

Variable dan method yang diberikan hak akses private hanya bisa diakses oleh class itu sendiri, data-data tersebut tidak bisa diwariskan pada subclass atau class lainnya.

Agar class lain bisa mengkases variable atau method tersebut maka perlu dibuatkan method yang mempunyai hak akses public (package yang berbeda) atau protected (pada package yang sama). Seperti pada contoh berikut ini:

package WILDAN_TECHNO_ART;

class programming{
   
    private String language = "Java";
    
    public String getLanguage(){
        return language;
    }
}

public class latihan extends programming{
    public static void main(String[] args){
        latihan data = new latihan();
        System.out.println("Bahasa Pemrograman: "+data.getLanguage());
    }
}

Demo:

Contoh Modifier Private pada Java

Coba kalian perhatikan program tersebut, untuk mengakses variable language, kita memerlukan sebuah method public yang megembalikan nilai dari variable tersebut, jika kita mengakses variable language secara langsung, maka akan terjadi error, seperti berikut ini:

public class latihan extends programming{
    public static void main(String[] args){
        latihan data = new latihan();
        System.out.println("Bahasa Pemrograman: "+data.language); //Error
    }
}

Program tersebut akan terjadi error, karena variable language mempunyai hak akses private, jadi tidak bisa diakses secara langsung.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.