Di Java, semuanya memiliki beberapa bentuk kontrol akses.
Tingkat kontrol izin akses berasal dari yang terbesar hingga minimum: izin akses publik, terlindungi, paket (tidak ada kata kunci) dan pribadi.
Saat digunakan, pengubah akses Java, publik, terlindungi dan pribadi, ditempatkan di hadapan setiap anggota (domain atau metode) definisi di kelas.
1. Akses hak anggota kelas
Satu -satunya cara untuk mendapatkan akses ke anggota adalah:
1). Jadikan anggota ini publik. Tidak peduli siapa, anggota dapat diakses;
2). Hibah Paket Akses ke Anggota dengan pengubah yang tidak tertangani dan menempatkan kelas lain dalam paket yang sama, dan kelas lain dalam paket dapat mengakses anggota;
3). Kelas yang diwariskan dapat mengakses anggota publik dan anggota yang dilindungi.
4). Berikan metode aksesor dan mutator untuk membaca dan mengubah nilai numerik.
1. Izin akses paket
Izin akses default tidak memiliki kata kunci, tetapi pass mengacu pada izin akses paket, yang berarti bahwa semua kelas lain dalam laporan saat ini memiliki akses ke anggota itu, tetapi untuk semua kelas di luar paket ini, anggota ini memang pribadi.
Akses paket menggabungkan semua kelas yang relevan dalam paket sehingga mereka dapat dengan mudah berinteraksi satu sama lain.
Catatan: Jika kedua kelas berada di direktori yang sama dan tidak mengatur nama paket apa pun untuk diri mereka sendiri, Java akan secara otomatis menganggap file -file tersebut sebagai paket default yang berafiliasi dengan direktori, sehingga file -file ini memiliki akses paket satu sama lain.
Contoh berikut menggambarkan masalah ini:
// Kue dan pai kelas berada di direktori yang sama dan tidak ditampilkan secara eksplisit di pie paket paket apa pun {void f () {System.out.println ("pie.f ()"); }} class cake {public static void main (string [] args) {pie x = new pie (); xf (); }} // outputnya adalah pie.f ()2. Publis: Izin Akses Antarmuka
Menggunakan kata kunci publik berarti bahwa deklarasi anggota berikutnya tersedia untuk semua orang, terutama pemrogram klien yang menggunakan perpustakaan kelas.
3. -Private: Anda tidak dapat mengaksesnya
Kata kunci pribadi menunjukkan bahwa tidak ada kelas lain selain kelas yang berisi anggota yang tidak dapat mengakses anggota. Kelas -kelas lain dalam paket yang sama tidak dapat mengakses anggota pribadi kelas ini, jadi ini setara dengan mengisolasi diri sendiri.
Fungsi kata kunci pribadi ini memiliki banyak kegunaan, seperti mengendalikan bagaimana objek dibuat dan mencegah orang lain dari secara langsung mengakses konstruktor tertentu (atau semua konstruktor). Lihat
Contoh berikut:
kelas sundae {private sundae () {} static sundae makeasundae () {return new sundae (); }} kelas publik icecream {public static void main (string [] args) {sundae x = sundae.makeasundae (); }}Dalam contoh ini, kita dapat membuat objek Sundae dengan memanggil metode makeasundae (), tetapi kita tidak dapat membuatnya melalui konstruktor.
Ini juga berlaku untuk bidang pribadi di kelas.
Namun, satu hal yang perlu diperhatikan adalah bahwa Anda tidak dapat berpikir bahwa objek lain tidak dapat memiliki referensi publik ke objek hanya karena referensi ke suatu objek di kelas adalah pribadi.
4. Dilindungi: Izin Akses Warisan
Jika paket baru dibuat dan mewarisi kelas dari paket lain, satu -satunya anggota yang dapat diakses adalah anggota publik dari paket sumber.
Kadang -kadang, pencipta kelas dasar ingin menetapkan akses ke anggota tertentu ke kelas yang diturunkan daripada semua kelas, yang mengharuskan kata kunci dilindungi.
Perhatikan bahwa Dilindungi juga menyediakan akses paket, yaitu, kelas lain dalam paket yang sama juga dapat mengakses elemen yang dilindungi dari kelas ini.
2. Antarmuka dan Implementasi
Kontrol hak akses sering disebut tersembunyi dalam implementasi konkret.
Data pengemasan dan metode ke dalam kelas, dan menyembunyikan implementasi spesifik sering secara kolektif disebut enkapsulasi.
Untuk dua alasan penting, kontrol izin akses terletak batas -batas izin di dalam tipe data:
1. Tetapkan batas yang dapat digunakan oleh programmer klien dan tidak dapat digunakan. Anda dapat menetapkan mekanisme internal Anda sendiri dalam struktur, tanpa khawatir bahwa pemrogram klien akan secara tidak sengaja memperlakukan mekanisme internal sebagai bagian dari antarmuka yang mereka gunakan.
2. Pisahkan antarmuka dan implementasi spesifik.
3. Izin Akses Kelas
Di Java, pengubah akses juga dapat digunakan untuk menentukan kelas mana di perpustakaan yang tersedia untuk pengguna perpustakaan.
Pengubah harus ditempatkan sebelum kelas kata kunci. Misalnya:
widget kelas publik {......} atau
Tingkatkan Access.widget;
Anda harus tahu bahwa suatu kelas tidak dapat bersifat pribadi (jika kelasnya pribadi, maka tidak ada kelas lain yang dapat mengaksesnya kecuali kelas), juga tidak dapat dilindungi (pada kenyataannya, kelas internal dapat bersifat pribadi atau dilindungi, tetapi ini adalah kasus khusus, seperti yang dijelaskan dalam artikel berikutnya), dan hanya dapat berupa izin akses paket atau publik.
Jika Anda tidak ingin orang lain mengakses kelas, Anda dapat menentukan semua konstruktor kelas sebagai pribadi, mencegah siapa pun membuat objek kelas. Tetapi ada pengecualian untuk ini, yang tidak dapat mencegah Anda membuat kelas di dalam anggota statis kelas. Mari kita lihat contoh berikut:
kelas sup1 {private soup1 () {} public static Soup1 makeoup () {// Buat objek menggunakan metode statis mengembalikan Soup1 baru (); }} kelas sup2 {private soup2 () {} private static soup2 ps1 = new sup2 (); // Buat objek menggunakan mode singleton public static Soup2 Access () {return ps1; } public void f () {}} public class lunch {void testPrivate () {// sup1 sup = new sup1; Tidak dapat dieksekusi} void testsingleton () {sup2.access (). F (); }}Kita dapat melihat bahwa konstruktor Soup1 dan Soup2 keduanya pribadi, dan tidak ada yang dapat secara langsung menggunakan konstruktor untuk membuat objek kelas ini. Tetapi kami juga dapat menggunakan dua kelas ini: membuat metode statis di Soup1, menggunakan konstruktor untuk membuat objek Soup1 dan mengembalikan rujukannya; Penciptaan Soup2 menggunakan pola singleton dalam pola desain, dan hanya dapat membuat salah satu objeknya. Objek kelas Soup2 dibuat sebagai anggota pribadi statis Soup2, jadi hanya ada satu, dan tidak dapat diakses kecuali diakses melalui metode publik.
Selain itu, beberapa batasan patut dicatat:
1. Setiap unit kompilasi hanya dapat memiliki satu kelas publik.
2. Nama kelas publik harus cocok dengan nama file yang berisi unit kompilasi, termasuk huruf besar dan kecil.
3. Jika tidak ada kelas publik di unit kompilasi, Anda dapat memberi nama file sesuka hati.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.