Bahasa Java menyediakan banyak pengubah, terutama dibagi menjadi dua kategori berikut:
Pengubah digunakan untuk menentukan kelas, metode, atau variabel, dan biasanya ditempatkan di ujung depan pernyataan. Mari kita gunakan contoh -contoh berikut untuk menggambarkan:
Kelas Publik ClassName {// ...} private boolean myflag; minggu ganda final statis = 9.5; static static final int boxwidth = 42; public static void main (string [] argumen) {// Metode body}Pengubah Kontrol Akses
Di Java, kontrol akses dapat digunakan untuk melindungi akses ke kelas, variabel, metode dan konstruktor. Java mendukung 4 izin akses yang berbeda.
Default, juga dikenal sebagai default, terlihat dalam paket yang sama tanpa menggunakan pengubah apa pun.
Pribadi, ditentukan dengan pengubah pribadi, terlihat dalam kelas yang sama.
Umum, ditentukan oleh pengubah publik, terlihat oleh semua kelas.
Dilindungi, ditentukan dengan pengubah yang dilindungi, terlihat oleh kelas dan semua subkelas dalam paket yang sama.
Pengubah Akses Default - Tidak Ada Kata Kunci yang Digunakan
Variabel dan metode yang dinyatakan secara default pengubah akses dapat terlihat oleh kelas -kelas dalam paket yang sama. Semua variabel dalam antarmuka secara implisit dinyatakan sebagai final statis publik, sedangkan metode dalam antarmuka bersifat publik secara default.
Contoh:
Seperti yang ditunjukkan dalam contoh berikut, deklarasi variabel dan metode dapat tanpa pengubah.
Versi string = "1.5.1"; boolean processOrder () {return true;}Pengubah Akses Pribadi - Pribadi
Pengubah akses pribadi adalah tingkat akses paling ketat, sehingga metode, variabel dan konstruktor yang dinyatakan sebagai pribadi hanya dapat diakses oleh kelas tempat mereka berada, dan kelas dan antarmuka tidak dapat dinyatakan sebagai pribadi.
Variabel yang dinyatakan sebagai jenis akses pribadi hanya dapat diakses oleh kelas eksternal melalui metode pengambil publik di kelas.
Penggunaan pengubah akses pribadi terutama digunakan untuk menyembunyikan detail implementasi kelas dan melindungi data kelas.
Kelas berikut menggunakan pengubah akses pribadi:
Logger kelas publik {format string privat; public string getFormat () {return this.format; } public void setFormat (format string) {this.format = format; }}Dalam contoh, variabel format di kelas logger adalah variabel pribadi, sehingga kelas lain tidak dapat secara langsung memperoleh dan mengatur nilai variabel. Untuk mengaktifkan kelas lain untuk memanipulasi variabel, dua metode publik didefinisikan: getFormat () (mengembalikan nilai format) dan setFormat (string) (menetapkan nilai format)
Pengubah Akses Publik - Publik
Kelas, metode, konstruktor, dan antarmuka yang dinyatakan sebagai publik dapat diakses oleh kelas lain.
Jika beberapa kelas publik yang saling mengakses didistribusikan dalam paket yang berbeda, Anda perlu mengimpor paket di mana kelas publik yang sesuai berada. Karena warisan kelas, semua metode publik dan variabel kelas dapat diwarisi oleh subkelasnya.
Fungsi berikut menggunakan kontrol akses publik:
Public static void main (string [] argumen) {// ...}Metode utama () dari program Java harus diatur ke publik, jika tidak, juru bahasa Java tidak akan dapat menjalankan kelas.
Pengubah Akses Lindung - Dilindungi
Variabel, metode, dan konstruktor yang dinyatakan sebagai dilindungi dapat diakses oleh kelas lain dalam paket yang sama, atau oleh subclass dalam paket yang berbeda.
Pengubah akses yang dilindungi tidak dapat memodifikasi kelas dan antarmuka. Metode dan variabel anggota dapat dinyatakan sebagai dilindungi, tetapi variabel anggota dan metode anggota antarmuka tidak dapat dinyatakan sebagai dilindungi.
Subkelas dapat mengakses metode dan variabel yang dinyatakan oleh pengubah yang dilindungi, sehingga mereka dapat melindungi kelas yang tidak terkait dari menggunakan metode dan variabel ini.
Kelas induk berikut menggunakan pengubah akses yang dilindungi, dan subkelas membebani metode OpenSpeaker () kelas induk.
kelas audioplayer {protected boolean openspeaker (speaker sp) {// detail implementasi}} class streamingaudioPlayer {boolean openspeaker (speaker sp) {// detail implementasi}}Jika metode OpenSpeaker () dinyatakan sebagai pribadi, maka kelas selain audioplayer tidak akan dapat mengakses metode ini. Jika OpenSpeaker () dinyatakan publik, semua kelas dapat mengakses metode ini. Jika kita ingin metode ini hanya terlihat oleh subclass dari kelasnya, lalu nyatakan metode yang dilindungi.
Kontrol dan warisan akses
Harap perhatikan aturan warisan berikut:
Pengubah non-akses
Untuk mengimplementasikan beberapa fungsi lain, Java juga menyediakan banyak pengubah non-akses.
Pengubah statis digunakan untuk membuat metode kelas dan variabel kelas.
Pengubah akhir digunakan untuk memodifikasi kelas, metode, dan variabel. Kelas yang dimodifikasi oleh final tidak dapat diwarisi, metode yang dimodifikasi tidak dapat didefinisikan ulang oleh kelas yang diwariskan, dan variabel yang dimodifikasi adalah konstan dan tidak dapat dimodifikasi.
Pengubah abstrak, digunakan untuk membuat kelas abstrak dan metode abstrak.
Pengubah yang disinkronkan dan mudah menguap terutama digunakan untuk pemrograman utas.
Pengubah statis
Kata kunci statis digunakan untuk mendeklarasikan variabel statis yang terlepas dari objek. Tidak peduli berapa banyak objek yang dimaksudkan kelas, ia hanya memiliki satu salinan variabel statisnya. Variabel statis juga disebut variabel kelas. Variabel lokal dapat dinyatakan sebagai variabel statis.
Kata kunci statis digunakan untuk mendeklarasikan metode statis terlepas dari objek. Metode statis tidak dapat menggunakan variabel non-statis kelas. Metode statis mendapatkan data dari daftar parameter dan kemudian menghitung data.
Akses ke variabel dan metode kelas dapat diakses secara langsung menggunakan classname.variablename dan classname.methodname.
Seperti yang ditunjukkan pada contoh berikut, pengubah statis digunakan untuk membuat metode kelas dan variabel kelas.
kelas publik InstanceCounter {private static int numInstances = 0; lindung statis int getCount () {return numInstances; } private static void addInstance () {numInstances ++; } InstanceCounter () {instancecounter.addinstance (); } public static void main (string [] argumen) {System.out.println ("Dimulai dengan" + instanceCounter.getCount () + "instances"); untuk (int i = 0; i <500; ++ i) {new InstanceCounter (); } System.out.println ("dibuat" + instanceCounter.getCount () + "instances"); }}Contoh di atas dijalankan dan diedit sebagai berikut:
Dimulai dengan 0 instance
Membuat 500 instance
Pengubah terakhir
Variabel terakhir:
Variabel akhir dapat diinisialisasi secara eksplisit dan hanya dapat diinisialisasi sekali. Referensi ke objek yang dinyatakan sebagai final tidak dapat menunjuk ke berbagai objek. Tetapi data dalam objek akhir dapat diubah. Dengan kata lain, referensi ke objek akhir tidak dapat diubah, tetapi nilai di dalamnya dapat diubah.
Pengubah akhir biasanya digunakan bersama dengan pengubah statis untuk membuat konstanta kelas.
Contoh:
tes kelas publik {nilai int akhir = 10; // Di bawah ini adalah contoh yang menyatakan boxwidth int statis public static final = 6; Static Final String Title = "Manager"; public void changeValue () {value = 12; // kesalahan akan menjadi output}}Metode terakhir
Metode terakhir di kelas dapat diwarisi oleh subkelas, tetapi tidak dapat dimodifikasi oleh subkelas.
Tujuan utama mendeklarasikan metode akhir adalah untuk mencegah konten metode dimodifikasi.
Seperti yang ditunjukkan di bawah ini, nyatakan metode menggunakan pengubah akhir.
tes kelas publik {public final void changeName () {// Method Body}}Kelas terakhir
Kelas akhir tidak dapat diwariskan, dan tidak ada kelas yang dapat mewarisi fitur kelas akhir.
Contoh:
tes kelas akhir publik {// body class}Pengubah abstrak
Kelas Abstrak:
Kelas abstrak tidak dapat digunakan untuk membuat objek instantiate. Satu -satunya tujuan mendeklarasikan kelas abstrak adalah untuk memperluas kelas di masa depan.
Kelas tidak dapat dimodifikasi secara abstrak dan final pada saat yang sama. Jika kelas berisi metode abstrak, kelas harus dinyatakan sebagai kelas abstrak, jika tidak, kesalahan kompilasi akan terjadi.
Kelas abstrak dapat berisi metode abstrak dan metode non-abstrak.
Contoh:
Kelas Abstrak Caravan {Private Double Price; model string pribadi; tahun string pribadi; abstrak publik void gofast (); // Metode Abstrak Publik abstrak void changeColor ();}Metode abstrak
Metode abstrak adalah metode tanpa implementasi apa pun, dan implementasi spesifik dari metode ini disediakan oleh subkelas. Metode abstrak tidak dapat dinyatakan sebagai final dan ketat.
Subkelas apa pun yang mewarisi kelas abstrak harus mengimplementasikan semua metode abstrak dari kelas induk kecuali jika subkelas juga merupakan kelas abstrak.
Jika kelas berisi beberapa metode abstrak, kelas harus dinyatakan sebagai kelas abstrak. Kelas abstrak mungkin tidak mengandung metode abstrak.
Deklarasi metode abstrak diakhiri dengan titik koma, misalnya: sampel abstrak publik ();
Contoh:
kelas abstrak publik superclass {abstrak void m (); // Metode Abstrak} Kelas Subkelas Memperluas Superclass {// Implement Abstrak Metode void m () {.........}}Pengubah yang disinkronkan
Metode yang dinyatakan oleh kata kunci yang disinkronkan hanya dapat diakses oleh satu utas secara bersamaan. Pengubah yang disinkronkan dapat diterapkan pada empat pengubah akses.
Contoh:
publicronized void showDetails () {......}Pengubah transien
Ketika objek serial berisi variabel instance yang dimodifikasi secara transien, Java Virtual Machine (JVM) melewatkan variabel spesifik itu.
Pengubah ini termasuk dalam pernyataan yang mendefinisikan variabel dan digunakan untuk preprocess tipe data kelas dan variabel.
Contoh:
Batas int transien publik = 55; // tidak akan bertahan int b; // akan bertahan
pengubah yang mudah menguap
Variabel anggota yang dimodifikasi volatile dipaksa untuk membaca ulang nilai variabel anggota dari memori bersama setiap kali diakses oleh utas. Selain itu, ketika variabel anggota berubah, utas dipaksa untuk menulis nilai perubahan kembali ke memori bersama. Dengan cara ini, kapan saja, dua utas yang berbeda selalu melihat nilai yang sama dari variabel anggota tertentu. Referensi objek yang mudah menguap mungkin nol.
Contoh:
kelas publik MyRunnable mengimplementasikan runnable {private volatile boolean aktif; public void run () {Active = true; while (aktif) // baris 1 {// kode}} public void stop () {Active = false; // baris 2}}Secara umum, metode run () dipanggil dalam satu utas dan metode stop () dipanggil di utas lain. Jika nilai dalam baris 1 aktif dalam buffer digunakan, loop tidak akan berhenti ketika aktif di baris 2 diatur ke false.
Di atas adalah semua konten artikel ini. Saya berharap konten artikel ini akan membantu untuk belajar atau bekerja semua orang. Saya juga berharap untuk mendukung wulin.com lebih lanjut!