Dalam keadaan normal, kelas modifikasi statis tidak dapat digunakan. Jika Anda harus menggunakan statis untuk memodifikasi kelas, statis biasanya memodifikasi kelas internal anonim.
Buat kelas lain dalam satu kelas, yang disebut kelas dalam kelas dalam. Kelas internal anggota ini dapat statis (menggunakan modifikasi kata kunci statis) atau non-statis. Karena kelas internal statis memiliki berbagai batasan saat mendefinisikan dan menggunakannya. Jadi tidak banyak yang digunakan dalam pekerjaan aktual.
Selama proses pengembangan, kelas internal yang paling umum digunakan dalam kelas internal yang merupakan anggota non-statis. Namun, dalam kasus tertentu, kelas dalam statis juga dapat memainkan peran unik mereka.
1. Tujuan penggunaan kelas internal statis.
Saat mendefinisikan kelas dalam, Anda dapat mengawalinya dengan pengubah izin statis. Pada saat ini, kelas dalam ini menjadi kelas batin yang statis. Namun, karena berbagai alasan, seperti pembatasan penggunaan dan faktor -faktor lain (pembatasan penggunaan spesifik dijelaskan secara rinci dalam konten berikut), tidak banyak yang digunakan dalam pekerjaan aktual. Tapi itu tidak berarti itu tidak memiliki nilai. Dalam beberapa kasus khusus, benar -benar tidak mungkin untuk kekurangan kelas dalam statis ini. Misalnya, saat melakukan pengujian program kode, jika metode utama diatur dalam setiap file sumber Java (metode utama adalah pintu masuk ke aplikasi tertentu dan harus memilikinya), maka banyak kode tambahan akan muncul. Dan yang paling penting adalah bahwa kode dari program utama ini hanyalah formulir untuk file Java, dan itu tidak memerlukan metode utama ini sendiri. Tetapi benar -benar tidak mungkin dilakukan tanpa metode utama ini. Dalam hal ini, metode utama dapat ditulis ke dalam kelas dalam statis, sehingga tidak perlu menetapkan metode utama yang serupa untuk setiap file sumber Java. Ini sangat berguna untuk pengujian kode. Dalam beberapa pengembangan aplikasi menengah dan besar, ini adalah cara teknis yang umum digunakan. Untuk alasan ini, meskipun kelas internal statis ini tidak terlalu umum digunakan, pengembang program juga harus menguasainya. Mungkin pada saat yang kritis, itu masih bisa memainkan peran besar.
kelas publik MainInstaticClass {kelas statis utama {static void main () {// Tulis metode utama ke kelas dalam statis, jadi tidak perlu memiliki metode utama semacam ini untuk setiap file sumber MaininStaticClass baru (). Cetak ();}} public static Main (string [] args) {Maininstatic ();} public static void (string [] args) {Maininstatic (). print () {System.out.println ("Main di kelas dalam statis");}} kelas publik testmain {public static void main (string [] args) {// todo Metode yang dihasilkan otomatis stub // maininstaticclass baru (). print (); maininstaticclass.main.main.main (); mainIntaticclass (). CLOCK (); MaininStaticClass.main.main.main (); MainIntaticClass ().2. Keterbatasan penggunaan kelas internal statis.
Mendefinisikan kelas dalam sebagai kelas statis pada dasarnya sama dengan mendefinisikan kelas lain sebagai kelas statis, dan aturan referensi pada dasarnya sama. Namun, detailnya masih sangat berbeda. Secara khusus, terutama ada bidang -bidang berikut untuk menarik perhatian semua pengembang program.
Salah satunya adalah definisi anggota statis (termasuk variabel statis dan anggota statis). Secara umum, jika kelas dalam tidak didefinisikan sebagai kelas dalam statis, maka tidak dapat didefinisikan sebagai variabel anggota statis dan metode anggota statis ketika mendefinisikan variabel anggota atau metode anggota. Artinya, anggota statis tidak dapat dinyatakan dalam kelas dalam non-statis. Misalnya, usia kelas internal sekarang didefinisikan dalam kelas siswa. Jika kelas ini tidak dimodifikasi dengan kata kunci statis, yaitu, itu tidak didefinisikan sebagai kelas statis, maka tidak diizinkan untuk memodifikasi metode anggota tertentu atau variabel anggota di kelas internal ini. Itu tidak akan bisa lewat saat menyusun. Oleh karena itu, pengembang program perlu dicatat bahwa hanya dengan memodifikasi kelas dalam sebagai kelas statis dapat variabel anggota statis dan metode anggota didefinisikan dalam kelas ini. Ini adalah fitur yang dimiliki kelas dalam statis. Justru karena alasan ini bahwa kadang -kadang banyak tugas tidak dapat diselesaikan tanpa kelas internal statis ini. Atau perlu untuk mengelilingi lingkaran besar untuk mencapai kebutuhan pengguna tertentu. Ini juga merupakan alasan penting mengapa internal statis ada.
Kedua, ada pembatasan yang relatif besar pada kutipan anggota. Kelas dalam non-statis umum dapat mengakses variabel anggota dan metode anggota di kelas eksternal sesuka hati. Bahkan jika metode anggota ini dimodifikasi sebagai pribadi (variabel atau metode anggota pribadi), kelas dalam non-statis mereka dapat diakses sesuka hati. Ini adalah hak istimewa kelas dalam non-statis. Karena di kelas lain, variabel atau metode anggota yang didefinisikan sebagai pribadi tidak dapat diakses. Namun, jika kelas dalam didefinisikan sebagai statis, akan ada banyak batasan saat menggunakan metode anggota atau variabel anggota kelas luar. Misalnya, anggota non-statis dari kelas eksternal (termasuk variabel anggota dan metode anggota) tidak dapat diakses dari objek kelas dalam statis. Apa artinya ini? Jika dua variabel didefinisikan dalam kelas eksternal, satu adalah variabel non-statis dan yang lainnya adalah variabel statis. Kemudian di kelas dalam statis, baik di dalam metode anggota atau di tempat lain, ia hanya dapat merujuk variabel statis di kelas luar, dan tidak dapat mengakses variabel non-statis. Dalam kelas dalam statis, metode statis dapat didefinisikan (dan hanya metode statis yang dapat didefinisikan dalam kelas dalam statis), dan anggota kelas eksternal dapat dirujuk dalam metode statis. Namun, di mana pun kelas dalam dirujuk, ada satu kesamaan, yaitu, ia hanya dapat merujuk metode anggota statis atau variabel anggota di kelas luar. Untuk variabel anggota non-statis dan metode anggota, mereka tidak dapat diakses di kelas dalam statis. Ini adalah batas penggunaan maksimum untuk kelas dalam statis. Tidak ada batasan seperti itu di kelas batin non-statis biasa. Justru alasan mengapa kelas internal statis hanya digunakan dalam beberapa kesempatan tertentu. Rentang aplikasinya jauh lebih luas daripada kelas internal non-statis.
Ketiga, saat membuat kelas dalam statis, tidak perlu mengikat contoh kelas dalam statis ke contoh kelas eksternal.
Secara umum, ketika membuat kelas internal anggota di kelas, ada ketentuan wajib, yaitu, contoh kelas dalam harus terikat pada contoh kelas luar. Artinya, sebelum membuat kelas dalam, Anda harus terlebih dahulu menggunakan kata kunci baru di kelas luar untuk membuat objek kelas dalam ini. Dalam hal ini, jika objek kelas dalam diinisialisasi dari kelas eksternal, objek kelas dalam akan terikat ke objek kelas luar. Dengan kata lain, objek kelas dalam non-statis biasa melekat pada objek eksternal. Namun, jika pengembang anggota membuat kelas batin yang statis, itu masalah lain. Secara umum, ketika seorang programmer mendefinisikan kelas dalam statis, ia tidak perlu mendefinisikan contoh kelas eksternal. Dengan kata lain, untuk mendefinisikan kelas dalam statis di kelas eksternal, tidak perlu menggunakan kata kunci baru untuk membuat instance dari kelas dalam. Artinya, saat membuat objek internal dari kelas statis, objek kelas eksternal tidak diperlukan.
newMainInStaticClass.Main();
Untuk alasan spesifik, umumnya pengembang program tidak perlu memahami begitu dalam, mereka hanya perlu mengingat bahwa ada aturan ini. Saat mendefinisikan kelas internal statis, jangan pernah membuat kesalahan dengan menambahkan uang tambahan.
Dari analisis di atas, kita dapat melihat bahwa kelas dalam statis masih sangat berbeda dari kelas dalam non-statis. Secara umum, pengembang program dapat memahami bahwa objek kelas dalam non-statis secara implisit menyimpan referensi di kelas luar untuk menunjuk ke objek kelas luar yang membuatnya. Terlepas dari pemahaman ini, pengembang program perlu mengingat perbedaan antara kelas batin statis dan kelas batin non-statis. Misalnya, apakah metode anggota statis dan variabel anggota dapat dibuat (kelas dalam statis dapat membuat anggota statis alih-alih kelas batin statis tidak dapat), pembatasan mengakses anggota kelas eksternal (kelas dalam statis hanya dapat mengakses variabel anggota statis dan metode anggota eksternal dan non-statis. Dua perbedaan ini adalah perbedaan terbesar antara kelas dalam statis dan kelas luar non-statis, dan juga alasan mengapa kelas dalam statis ada. Setelah memahami perbedaan ini, pengembang program juga perlu diketahui dalam keadaan apa mereka harus menggunakan kelas dalam statis. Misalnya, selama pengujian program, untuk menghindari menulis kode metode utama di setiap file sumber Java, metode utama dapat ditulis ke dalam kelas internal statis untuk mengurangi jumlah kode yang ditulis dan membuat kode lebih ringkas.
Singkatnya, kelas dalam statis adalah kelas yang sangat istimewa dalam bahasa Java, yang sangat berbeda dari kelas statis biasa dan kelas batin non-statis. Sebagai pengembang program, perlu untuk mengetahui perbedaan di antara mereka dan mengadopsi kelas yang tepat di mana mereka berada dalam pekerjaan nyata. Namun, secara umum, frekuensi kelas internal statis tidak terlalu tinggi. Namun, dalam beberapa kesempatan, jika kelas statis internal ini tidak tersedia, ia mungkin memiliki efek negatif dari setengah hasil dengan dua kali upaya tersebut.
3. Instantiasi
Setelah membaca konten di atas, saya mengujinya secara keseluruhan:
Pertama -tama, semua orang perlu memahami bahwa kelas dalam statis tidak tergantung pada kelas eksternal, dan variabel dan metode di dalamnya tidak selalu statis. Mari kita bicara tentang kode di bawah ini:
tes kelas publik {public static void main (string [] args) {myinnerstaticclass inner = myinnerstaticclass baru (); inner.a = 10; inner.b = "abc"; System.out.println (inner.a+""+inner.b);} kelas statis myinnerstatic class myinnerstatic {{{{{{{{{{{{{{{{a mynerstatic class {{{{{{a mynerstatic { tes kelas publik {public static void main (string [] args) {myinnerstaticclass inner = myinnerstaticclass baru (); inner.a = 10; inner.b = "abc"; System.out.println (inner.a+""+inner.b);} kelas statis myinnerstatic class myinnerstatic {{{{{{{{{{{{{{{{a mynerstatic class {{{{{{a mynerstatic {Kode di atas mensstulikan kelas anonim statis dengan yang baru, masukkan 10 ABC setelah berjalan, benar!
Meringkaskan
Di atas adalah semua penjelasan terperinci dari kelas statis di Java dalam artikel ini. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!