Pengubah Akses di Java

1. Ikhtisar

Dalam tutorial ini, kita membahas pengubah akses di Java, yang digunakan untuk menyetel tingkat akses ke kelas, variabel, metode, dan konstruktor.

Sederhananya, ada empat pengubah akses: publik , pribadi , dilindungi , dan default (tanpa kata kunci).

Sebelum kita mulai, perhatikan bahwa kelas tingkat atas hanya dapat menggunakan pengubah akses publik atau default . Di level member, kita bisa menggunakan keempatnya.

2. Default

Saat kami tidak menggunakan kata kunci apa pun secara eksplisit, Java akan menyetel akses default ke kelas, metode, atau properti tertentu. Pengubah akses default juga disebut package-private , yang berarti bahwa semua anggota terlihat dalam paket yang sama tetapi tidak dapat diakses dari paket lain:

package com.baeldung.accessmodifiers; public class SuperPublic { static void defaultMethod() { ... } }

defaultMethod () dapat diakses di kelas lain dari paket yang sama:

package com.baeldung.accessmodifiers; public class Public { public Public() { SuperPublic.defaultMethod(); // Available in the same package. } }

Namun, ini tidak tersedia di paket lain.

3. Publik

Jika kita menambahkan kata kunci publik ke kelas, metode, atau properti, maka kita membuatnya tersedia untuk seluruh dunia , yaitu semua kelas lain di semua paket akan dapat menggunakannya. Ini adalah pengubah akses yang paling tidak membatasi:

package com.baeldung.accessmodifiers; public class SuperPublic { public static void publicMethod() { ... } }

publicMethod () tersedia dalam paket lain:

package com.baeldung.accessmodifiers.another; import com.baeldung.accessmodifiers.SuperPublic; public class AnotherPublic { public AnotherPublic() { SuperPublic.publicMethod(); // Available everywhere. Let's note different package. } }

Untuk detail lebih lanjut tentang bagaimana kata kunci publik berperilaku ketika diterapkan ke kelas, antarmuka, kelas publik bersarang atau antarmuka dan metode, lihat artikel khusus.

4. Pribadi

Setiap metode, properti, atau konstruktor dengan kata kunci privat hanya dapat diakses dari kelas yang sama . Ini adalah pengubah akses yang paling ketat dan merupakan inti dari konsep enkapsulasi. Semua data akan disembunyikan dari dunia luar:

package com.baeldung.accessmodifiers; public class SuperPublic { static private void privateMethod() { ... } private void anotherPrivateMethod() { privateMethod(); // available in the same class only. } }

Artikel yang lebih mendetail ini akan menunjukkan bagaimana kata kunci privat berperilaku ketika diterapkan ke bidang, konstruktor, metode, dan kelas dalam.

5. Dilindungi

Di antara tingkat akses publik dan pribadi , ada pengubah akses yang dilindungi .

Jika kita mendeklarasikan metode, properti atau konstruktor dengan kata kunci yang dilindungi , kita dapat mengakses anggota dari paket yang sama (seperti dengan tingkat akses paket-pribadi ) dan sebagai tambahan dari semua subkelas kelasnya , bahkan jika mereka terletak di paket lain:

package com.baeldung.accessmodifiers; public class SuperPublic { static protected void protectedMethod() { ... } }

protectedMethod () tersedia dalam subclass (apa pun paketnya):

package com.baeldung.accessmodifiers.another; import com.baeldung.accessmodifiers.SuperPublic; public class AnotherSubClass extends SuperPublic { public AnotherSubClass() { SuperPublic.protectedMethod(); // Available in subclass. Let's note different package. } }

Artikel khusus menjelaskan lebih lanjut tentang kata kunci saat digunakan dalam bidang, metode, konstruktor, kelas dalam, dan aksesibilitas dalam paket yang sama atau paket yang berbeda.

6. Perbandingan

Tabel di bawah merangkum pengubah akses yang tersedia. Kita dapat melihat bahwa kelas, terlepas dari pengubah akses yang digunakan, selalu memiliki akses ke anggotanya:

Pengubah Kelas Paket Subkelas Dunia
publik
Y Y Y Y
terlindung
Y Y Y N
default
Y Y N N
pribadi
Y N N N

7. Kesimpulan

Dalam artikel singkat ini, kami membahas pengubah akses di Java.

Merupakan praktik yang baik untuk menggunakan tingkat akses yang paling ketat bagi anggota tertentu untuk mencegah penyalahgunaan. Kita harus selalu menggunakan pengubah akses pribadi kecuali ada alasan bagus untuk tidak melakukannya.

Tingkat akses publik hanya boleh digunakan jika anggota adalah bagian dari API.

Seperti biasa, contoh kode tersedia di Github.