Ringkasan
Baru -baru ini belajar Python dan menemukan bahwa Python mendukung lebih banyak warisan, yang mengingatkan saya pada mekanisme ini yang diterapkan oleh kelas internal. Artikel ini bukan tentang bagaimana mencapai lebih banyak warisan melalui kelas internal, tetapi untuk meringkas jenis dan metode penggunaan kelas internal.
Kelas internal Java dibagi menjadi:
Kelas internal digunakan dalam kode sumber Android dalam jumlah besar.
Selanjutnya, perkenalkan kelas internal ini masing -masing.
Kelas internal non -statis
Ketika kelas adalah anggota non -statis dari kelas lain, kelas ini adalah kelas internal non -statis.
Kode contoh membuat kelas internal non -statis adalah sebagai berikut:
class outclass {class innerclass {}}
Ketika kami menyusun Javac, kami menemukan bahwa dua file .class dihasilkan: outclass.class dan outclass $ innerclass.class. Seperti yang ditunjukkan pada gambar di bawah ini:
Kelas internal dari metode non -statis dari kelas eksternal
Sangat mudah untuk mengakses kelas internal di kelas eksternal. Kode contoh adalah sebagai berikut:
Outclass kelas publik {private static int a = 0; .makeInner ();} class innerclass {public void seeouter () {System.out.println (a);Hasilnya adalah sebagai berikut:
0
Kelas internal dari metode statis kelas eksternal
Relatif mudah untuk mengakses kelas internal di kelas eksternal.
Outclass.innerclass innerclass = outclass baru ().
Dengan kata lain, kelas internal non -statis harus dipakai terlebih dahulu, dan kemudian kelas internal yang dipakai digunakan melalui objek kelas eksternal. Kode contoh adalah sebagai berikut:
Outclass kelas publik {private static int a = 0; .innerclass innerclass = outclass baru ().
Jalankan Hasil:
01
Referensi ini di kelas internal
Kelas biasa dapat merujuk objek saat ini dengan ini, serta kelas internal. Tetapi bagaimana jika kelas internal ingin mengutip objek saat ini dari kelas eksternal? Anda dapat menggunakan cara -cara berikut:
Nama eksternal. Ini
Kode contoh adalah sebagai berikut:
Outclass kelas publik {private static int a = 0; .innerclass innerclass = outclass baru (). }}}
Kelas internal statis
Kelas internal non -statis diperkenalkan di atas.
Kelas internal statis adalah peran anggota statis di kelas eksternal.
Perhatikan bahwa kelas eksternal tidak dapat dimodifikasi menggunakan pengubah statis.
Kode contoh adalah sebagai berikut:
kelas outclass {static class innerclass {}}
Kompilasi dengan perintah javac, Anda dapat melihat bahwa ada dua file .class, seperti yang ditunjukkan pada gambar di bawah ini:
Kelas internal kelas internal statis dari metode non -statis dari kelas eksternal
Mengunjungi kelas internal statis dari kelas eksternal sama dengan kelas internal non -statis dalam kategori eksternal. Namun, perlu dicatat bahwa pada saat ini, kelas internal statis hanya dapat mengakses anggota statis dari kelas eksternal, dan anggota non -statis tidak dapat diakses.
Kode contoh adalah sebagai berikut:
Outclass kelas publik {private static int a = 0; outclass oClass = outclass baru (); println (b);}}}
Hasil eksekusi adalah sebagai berikut:
Outclass $ innerclass@79A3400
Klasifikasi internal kelas internal statis dari metode statis eksternal
Melihat:
Karena kelas internal statis adalah anggota statis dari kelas eksternal, dan anggota statis terikat ke kelas, bukan objek objek yang instanasi. Oleh karena itu, kelas internal dalam metode statis kelas eksternal tidak perlu instantiate kelas eksternal terlebih dahulu.
Kode contoh adalah sebagai berikut:
Outclass kelas publik {private static int a = 0; outclass oClass = outclass baru (); ini);
Kelas internal anonim
Kelas internal anonim adalah banjir dalam pengembangan aplikasi Android.
Kelas internal anonim dapat mengetahui bahwa ini adalah kelas internal yang tidak memiliki kategori, yang biasanya digunakan untuk menyederhanakan kode.
Saya percaya bahwa siswa yang menulis Java menggunakan utasnya. Kode contoh adalah sebagai berikut:
Kelas publik outclass {public void testanonymousClass () {thread t = thread baru (runnable baru () {@Override public void run () {for (int i = 0; i <10; i ++) {System.out.println (I); . ");} Public static void main (string [] args) {outclass oClass = new outclass (); oClass.testanonymousClass ();}}
Hasil eksekusi adalah sebagai berikut:
Benang lain sedang berjalan ...