Dalam tutorial ini, kita akan belajar tentang Java Access Modifier, tipenya, dan cara menggunakannya dengan bantuan contoh.
Apa itu Pengubah Akses?
Di Java, pengubah akses digunakan untuk mengatur aksesibilitas (visibilitas) kelas, antarmuka, variabel, metode, konstruktor, anggota data, dan metode penyetel. Sebagai contoh,
class Animal ( public void method1() (… ) private void method2() (… ) )
Dalam contoh di atas, kami telah mendeklarasikan 2 metode: method1 () dan method2 (). Sini,
- method1 adalah
public
- Ini berarti dapat diakses oleh kelas lain. - method2 adalah
private
- Ini berarti tidak dapat diakses oleh kelas lain.
Perhatikan kata kunci public
dan private
. Ini adalah pengubah akses di Java. Mereka juga dikenal sebagai pengubah visibilitas.
Catatan : Anda tidak dapat menyetel pengubah akses metode getter.
Jenis Pengubah Akses
Sebelum Anda mempelajari tentang jenis pengubah akses, pastikan Anda mengetahui tentang Paket Java.
Ada empat kata kunci pengubah akses di Java dan mereka adalah:
Pengubah | Deskripsi |
Default | deklarasi hanya terlihat di dalam paket (paket pribadi) |
Pribadi | deklarasi hanya terlihat di dalam kelas |
Terlindung | deklarasi terlihat di dalam paket atau semua subclass |
Publik | deklarasi terlihat di mana-mana |
Pengubah Akses Default
Jika kita tidak secara eksplisit menentukan pengubah akses apa pun untuk kelas, metode, variabel, dll, maka secara default pengubah akses default akan dipertimbangkan. Sebagai contoh,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Di sini, kelas Logger memiliki pengubah akses default. Dan kelas tersebut dapat dilihat oleh semua kelas yang termasuk dalam paket defaultPackage. Namun, jika kita mencoba menggunakan kelas Logger di kelas lain di luar defaultPackage, kita akan mendapatkan kesalahan kompilasi.
Pengubah Akses Pribadi
Ketika variabel dan metode dideklarasikan private
, mereka tidak dapat diakses di luar kelas. Sebagai contoh,
class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )
Dalam contoh di atas, kami telah mendeklarasikan variabel privat bernama name dan metode privat bernama display()
. Saat kita menjalankan programnya, kita akan mendapatkan error berikut:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Kesalahan dihasilkan karena kita mencoba mengakses variabel privat dan metode privat kelas Data dari kelas Utama.
Anda mungkin bertanya-tanya bagaimana jika kita perlu mengakses variabel privat tersebut. Dalam hal ini, kita dapat menggunakan metode getter dan setter. Sebagai contoh,
class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )
Keluaran :
Namanya Programiz
Dalam contoh di atas, kami memiliki variabel pribadi bernama name. Untuk mengakses variabel dari kelas luar, kami telah menggunakan metode: getName()
dan setName()
. Metode ini disebut pengambil dan penyetel di Java.
Di sini, kami telah menggunakan metode setter ( setName()
) untuk menetapkan nilai ke variabel dan metode pengambil ( getName()
) untuk mengakses variabel.
Kami telah menggunakan this
kata kunci di dalam setName () untuk merujuk ke variabel kelas. Untuk mempelajari lebih lanjut tentang kata kunci ini, kunjungi Java Kata Kunci ini.
Catatan : Kami tidak dapat mendeklarasikan kelas dan antarmuka sebagai pribadi di Java. Namun, kelas bersarang dapat dinyatakan sebagai pribadi. Untuk mempelajari lebih lanjut, kunjungi Java Nested and Inner Class.
Pengubah Akses Terproteksi
Ketika metode dan anggota data dideklarasikan protected
, kita dapat mengaksesnya dalam paket yang sama dan juga dari subclass. Sebagai contoh,
class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )
Keluaran :
Saya adalah seekor binatang
Dalam contoh di atas, kami memiliki metode terlindungi bernama display()
di dalam kelas Hewan. Kelas Hewan diwarisi oleh kelas Anjing. Untuk mempelajari lebih lanjut tentang pewarisan, kunjungi Java Inheritance.
Kami kemudian membuat anjing objek dari kelas Anjing. Menggunakan objek kami mencoba mengakses metode terproteksi dari kelas induk.
Karena metode yang dilindungi dapat diakses dari kelas anak, kita dapat mengakses metode kelas Hewan dari kelas Anjing.
Catatan : Kami tidak dapat mendeklarasikan kelas atau antarmuka protected
di Java.
Pengubah Akses Publik
Ketika metode, variabel, kelas, dan sebagainya dideklarasikan public
, maka kita dapat mengaksesnya dari mana saja. Pengubah akses publik tidak memiliki batasan cakupan. Sebagai contoh,
// Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )
Keluaran :
Saya adalah seekor binatang. Saya memiliki 4 kaki.
Sini,
- Hewan kelas publik diakses dari kelas Utama.
- LegCount variabel publik diakses dari kelas Utama.
- Metode publik
display()
diakses dari kelas Utama.
Pengubah Akses Diringkas dalam satu gambar

Pengubah akses terutama digunakan untuk enkapsulasi. Saya dapat membantu kami untuk mengontrol bagian mana dari program yang dapat mengakses anggota kelas. Sehingga penyalahgunaan data dapat dicegah. Untuk mempelajari lebih lanjut tentang enkapsulasi, kunjungi Enkapsulasi Java.