Pemuatan kelas
Sebelum berbicara tentang inisialisasi kelas, mari kita jelaskan urutan pemuatan kelas.
Berikut ini dikutip dari "Thinking in Java 4"
Karena segala sesuatu di Java adalah sebuah objek, banyak kegiatan
Masalah ini adalah salah satu contoh yang lebih sederhana. Seperti yang akan disebutkan dalam bab berikutnya, kode untuk setiap objek ada dalam file terpisah. Kecuali kode benar -benar diperlukan, file itu tidak akan dimuat. Secara umum, kita dapat berpikir bahwa kode tidak benar -benar akan memuat kecuali objek kelas itu dibangun. Karena ada beberapa ambiguitas halus dalam metode statis, juga dapat dipertimbangkan bahwa "kode kelas dimuat saat digunakan untuk pertama kalinya".
Pertama kali Anda menggunakannya juga di mana inisialisasi statis terjadi. Saat memuat, semua objek statis dan blok kode statis diinisialisasi dalam urutan aslinya (yaitu, urutan di mana mereka ditulis dalam kode definisi kelas). Tentu saja, data statis hanya akan diinisialisasi sekali.
Sederhananya, ketika kelas memiliki hubungan warisan, loader kelas akan membentuknya ke belakang dan memuat kelas terkait.
Misalnya:
Kelas B Memperluas Kelas A Saat kami baru B (), loader kelas secara otomatis memuat kode A
Urutan Inisialisasi Kelas
Biasanya urutan inisialisasi adalah sebagai berikut:
(Objek statis dan blok kode statis, diinisialisasi dalam pesanan mereka)> Variabel Anggota> Konstruktor
Kode uji
Kelas Publik ClassInit { / ** * @Title: main * @description: Tes Pesanan Inisialisasi Kelas * @param: @param args * @return: void * @throws * / public static void main (string [] args) {// todo Metode yang dihasilkan otomatis Stub b (); }} kelas A {static {System.out.println ("Blok kode statis A ..."); } public String S1 = prtString ("Variabel anggota A ..."); string statis publik S2 = prtString ("Variabel statis A ..."); publik a () {System.out.println ("Konstruktor A ..."); } public static string prtString (string str) {System.out.println (str); kembali nol; }} kelas B memperluas A {public string ss1 = prtString ("variabel anggota b ..."); string statis publik ss2 = prtstring ("variabel statis b ..."); publik b () {System.out.println ("Konstruktor B ..."); } private static a = new a (); static {System.out.println ("Blok kode statis B ..."); } {System.out.println ("Blok kode ..."); }} Hasil tes
Blok kode statis A ...
Variabel statis A ...
Variabel statis B ...
Variabel anggota ...
Konstruktor A ...
Blok kode statis B ...
Variabel anggota ...
Konstruktor A ...
Variabel anggota B ...
Blok kode ...
Konstruktor B ...
Meringkaskan
Di atas adalah seluruh konten dari urutan inisialisasi kelas di Java. Saya harap ini akan membantu semua orang menggunakan Java.