Hari ini kita akan belajar tentang kontrol hak akses di Java. Sebelum membahas kontrol akses, mari kita bahas mengapa kontrol akses diperlukan. Pertimbangkan dua skenario:
Skenario 1: Engineer A menulis kelas kelas, tetapi insinyur A tidak ingin classa diakses oleh kelas lain yang digunakan dalam aplikasi, jadi bagaimana kita harus menghadapinya?
Skenario 2: Jika insinyur A menulis kelas classa, yang memiliki dua metode fun1 dan fun2, insinyur hanya ingin Fun1 terlihat oleh dunia luar. Dengan kata lain, jika insinyur lain menelepon classa, mereka hanya dapat memanggil metode fun1, lalu apa yang harus kita lakukan?
Pada saat ini, kontrol izin akses dapat berperan.
Di Java, empat jenis kontrol hak akses disediakan: hak akses default (hak akses paket), publik, pribadi, dan terlindungi.
Perhatikan bahwa hanya izin akses default dan publik yang dapat digunakan untuk memodifikasi kelas untuk empat jenis izin akses di atas. Empat izin dari kelas yang dimodifikasi OK. (Kelas yang disebutkan di tempat ini menargetkan kelas eksternal, bukan kelas internal)
Berikut ini akan menjelaskan keempat kontrol hak akses ini untuk anggota kelas modifikasi dan kelas modifikasi.
1. Kategori Modifikasi
Izin Akses Default (Izin Akses Paket): Jika digunakan untuk memodifikasi kelas, itu berarti bahwa kelas hanya terlihat oleh kelas lain dalam paket yang sama.
PUBLIK: Jika digunakan untuk memodifikasi kelas, itu berarti bahwa kelas tersebut terlihat oleh semua kelas lainnya.
Mari kita lihat perbedaan antara keduanya melalui beberapa contoh:
Contoh 1:
Main.java:
paket com.cxh.test1; Public Class Main { / ** * @param args * / public static void main (string [] args) {// TODO Metode yang dihasilkan secara otomatis Stub People People = New People ("Tom"); System.out.println (People.getName ()); }} People.java
paket com.cxh.test1; class people {// izin akses default (izin akses paket) name string pribadi = null; orang publik (nama string) {this.name = name; } public string getName () {return name; } public void setName (name string) {this.name = name; }}Seperti yang dapat dilihat dari kode, memodifikasi kelas orang menggunakan izin akses default, dan karena kelas orang dan kelas utama berada dalam paket yang sama, kelas orang terlihat oleh kelas utama.
Hasil menjalankan program:
Contoh 2:
People.java
paket com.cxh.test2; class people {// izin akses default (izin akses paket) name string pribadi = null; orang publik (nama string) {this.name = name; } public string getName () {return name; } public void setName (name string) {this.name = name; }}Pada saat ini, kelas orang dan kelas utama tidak dalam paket yang sama. Apa yang akan terjadi?
Berikut adalah kesalahan yang diminta di kelas utama:
Ini meminta bahwa kelas Peolple tidak terlihat di kelas utama. Dari sini kita dapat melihat bahwa jika suatu kelas dimodifikasi dengan izin akses default, kelas hanya terlihat oleh kelas lain dalam paket yang sama dan tidak terlihat oleh kelas dalam paket yang berbeda.
Seperti yang ditunjukkan pada prompt koreksi cepat pada gambar di atas, jika Anda mengubah izin akses default dari kelas orang ke publik, kelas orang akan terlihat oleh kelas utama.
2. Metode dan variabel kelas memodifikasi
Izin Akses Default (Izin Akses Paket): Jika metode atau variabel kelas dimodifikasi dengan izin akses paket, itu berarti bahwa metode atau variabel kelas hanya dapat disebut ditampilkan di kelas lain dalam paket yang sama, dan metode atau variabel kelas tidak dapat disebut ditampilkan di kelas dalam paket yang berbeda.
Pribadi: Jika metode atau variabel kelas dimodifikasi oleh pribadi, maka metode atau variabel kelas hanya dapat diakses di kelas itu sendiri dan tidak dapat ditampilkan di kelas atau di kelas lain.
Dilindungi: Jika metode atau variabel kelas dimodifikasi dengan terlindungi, metode atau variabel kelas ini dapat diakses untuk kelas paket yang sama. Untuk kelas dengan paket yang berbeda, hanya kelas yang diwarisi dari kelas yang dapat mengakses metode atau variabel kelas itu.
Publik: Metode atau variabel yang dimodifikasi oleh publik terlihat di mana saja.
Mari kita ambil beberapa contoh untuk melihat perbedaan antara metode dan variabel kelas yang dilingkupi:
Contoh 3:
Main.java belum berubah
People.java
paket com.cxh.test1; People Public Class {private string name = null; orang publik (nama string) {this.name = name; } String getName () {// izin akses default (izin akses paket) nama pengembalian; } void setName (nama string) {// izin akses default (izin akses paket) this.name = name; }}Pada saat ini, metode panggilan getName dan setName dapat ditampilkan di kelas utama.
Tetapi jika kelas orang dan kelas utama tidak dalam paket yang sama:
paket com.cxh.test2; // Ada dalam paket yang berbeda dari kelas utama kelas publik People {private string name = null; orang publik (nama string) {this.name = name; } String getName () {// izin akses default (izin akses paket) nama pengembalian; } void setName (nama string) {// izin akses default (izin akses paket) this.name = name; }}Saat ini, kesalahan akan diminta di kelas utama:
Dari sini kita dapat melihat bahwa jika izin akses default digunakan untuk memodifikasi metode atau variabel kelas, mereka hanya dapat diakses di kelas lain dari paket yang sama.
Contoh 4:
People.java
paket com.cxh.test1; People Public Class {private string name = null; orang publik (nama string) {this.name = name; } string protected getName () {return name; } protected void setName (name string) {this.name = name; }}Pada saat ini, Anda dapat menampilkan metode panggilan getName dan setName di Main.
Jika kelas orang dan kelas utama berada dalam paket yang berbeda:
paket com.cxh.test2; People Public Class {private string name = null; orang publik (nama string) {this.name = name; } string protected getName () {return name; } protected void setName (name string) {this.name = name; }}Kesalahan akan dilaporkan di Main:
Jika seorang pria kelas ditentukan dalam com.cxh.test1 untuk mewarisi orang, Anda dapat menampilkan metode panggilan getName dan setName di kelas kelas:
paket com.cxh.test1; impor com.cxh.test2.people; Public Class Man Extends People {Public Man (String Name) {Super (Name); } public string toString () {return getName (); }}Berikut adalah beberapa pengetahuan tentang paket java dan file kelas:
1) Paket di Java terutama digunakan untuk mencegah konflik penamaan file kelas dan memfasilitasi organisasi dan manajemen kode;
2) Untuk file kode sumber Java, jika ada kelas publik, hanya ada satu kelas publik, dan nama file kode sumber harus persis sama dengan nama kelas publik. Selain itu, jika ada kelas lain, kelas -kelas ini tidak terlihat di luar paket. Jika file kode sumber tidak memiliki kelas publik, nama file kode sumber dapat dinamai sesuai keinginan.
Di atas adalah semua tentang artikel ini, saya harap ini akan membantu untuk pembelajaran semua orang.