Akses Pengubah di Java

1. Gambaran keseluruhan

Dalam tutorial ini, kita membahas pengubah akses di Java, yang digunakan untuk menetapkan tingkat akses ke kelas, pemboleh ubah, kaedah, dan pembangun.

Ringkasnya, terdapat empat pengubah akses: awam , swasta , dilindungi dan lalai (tanpa kata kunci).

Sebelum kita mulakan, perhatikan bahawa kelas tingkat atas hanya boleh menggunakan pengubah akses awam atau lalai sahaja. Di peringkat ahli, kita boleh menggunakan keempat-empatnya.

2. Lalai

Apabila kita tidak menggunakan kata kunci secara eksplisit, Java akan menetapkan akses lalai ke kelas, kaedah atau harta benda tertentu. Pengubah akses lalai juga disebut paket-peribadi , yang bermaksud bahawa semua ahli dapat dilihat dalam pakej yang sama tetapi tidak dapat diakses dari pakej lain:

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

defaultMethod () boleh diakses di kelas lain dengan pakej yang sama:

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

Walau bagaimanapun, ia tidak terdapat dalam pakej lain.

3. Orang ramai

Sekiranya kita menambahkan kata kunci awam ke kelas, kaedah atau harta benda maka kita membuatnya tersedia untuk seluruh dunia , iaitu semua kelas lain dalam semua pakej akan dapat menggunakannya. Ini adalah pengubah akses yang paling terhad:

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

publicMethod () terdapat dalam pakej 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 maklumat lebih lanjut mengenai bagaimana kata kunci awam berkelakuan ketika diterapkan pada kelas, antara muka, kelas awam bersarang atau antara muka dan kaedah, lihat artikel khusus.

4. Persendirian

Sebarang kaedah, harta benda atau pembina dengan kata kunci peribadi boleh diakses dari kelas yang sama sahaja . Ini adalah pengubah akses yang paling ketat dan merupakan teras kepada 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 terperinci ini akan menunjukkan bagaimana kata kunci peribadi berkelakuan ketika digunakan pada bidang, konstruktor, kaedah dan kelas dalaman.

5. Dilindungi

Di antara tahap akses awam dan swasta , ada pengubah akses dilindungi .

Sekiranya kita menyatakan kaedah, harta benda atau pembangun dengan kata kunci yang dilindungi , kita dapat mengakses ahli dari pakej yang sama (seperti dengan tahap akses pakej-peribadi ) dan sebagai tambahan dari semua subkelas kelasnya , walaupun terdapat pada pakej lain:

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

protectedMethod () tersedia dalam subkelas (tanpa mengira pakejnya):

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 banyak mengenai kata kunci apabila digunakan dalam bidang, kaedah, pembina, kelas dalam dan kebolehcapaian dalam pakej yang sama atau pakej yang berbeza.

6. Perbandingan

Jadual di bawah merangkum pengubah akses yang tersedia. Kita dapat melihat bahawa kelas, tanpa mengira pengubah akses yang digunakan, selalu mempunyai akses kepada ahlinya:

Pengubah Kelas Pakej Subkelas Dunia
awam
Y Y Y Y
dilindungi
Y Y Y N
lalai
Y Y N N
peribadi
Y N N N

7. Kesimpulannya

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

Adalah amalan yang baik untuk menggunakan tahap akses yang paling ketat untuk mana-mana anggota yang diberikan untuk mengelakkan penyalahgunaan. Kita harus selalu menggunakan pengubah akses peribadi kecuali ada alasan yang baik untuk tidak.

Tahap akses awam hanya boleh digunakan jika ahli adalah sebahagian daripada API.

Seperti biasa, contoh kod boleh didapati di Github.