Copy kode kodenya sebagai berikut:
kelas publik Tes4 {
@Tes
tes kekosongan publik(){
anak anak = anak baru();
}
}
orang tua kelas{
public static String parentStaticField = "Variabel statis kelas induk";
public String parentNormalField = "Variabel normal kelas induk";
statis {
Sistem.keluar.println(parentStaticField);
System.out.println("Blok statis kelas induk");
}
{
System.out.println(parentNormalField);
System.out.println("Blok biasa kelas induk");
}
orang tua publik(){
System.out.println("Konstruktor kelas induk");
}
}
kelas anak memperluas induk{
public static String childStaticField = "Variabel statis subkelas";
public String childNormalField = "Variabel normal subkelas";
statis {
Sistem.keluar.println(childStaticField);
System.out.println("Blok statis subkelas");
}
{
System.out.println(anakNormalField);
System.out.println("Subkelas blok biasa");
}
anak umum(){
System.out.println("Konstruktor subkelas");
}
}
Keluaran:
Copy kode kodenya sebagai berikut:
variabel statis kelas induk
blok statis kelas induk
Variabel statis subkelas
blok statis subkelas
Variabel biasa kelas induk
Blok normal kelas induk
Konstruktor kelas induk
Variabel biasa subkelas
Blok normal subkelas
Konstruktor subkelas
Proses eksekusi:
1. Saat mengeksekusi anak baru, pemuat mencari kode kelas anak yang dikompilasi (yaitu, file child.class). Selama proses pemuatan, pemuat mengetahui bahwa ia memiliki kelas dasar, sehingga memuat kelas dasar itu lagi. Proses ini akan selalu terjadi baik Anda membuat objek kelas dasar atau tidak. Jika kelas dasar mempunyai kelas dasar lain, maka kelas dasar kedua juga akan dimuat, dan seterusnya.
2. Melakukan inisialisasi statis pada kelas dasar root, kemudian inisialisasi statis pada kelas turunan berikutnya, dan seterusnya. Urutan ini sangat penting, karena "inisialisasi statis" dari kelas turunan mungkin bergantung pada inisialisasi yang benar dari anggota kelas dasar.
3. Ketika semua kelas yang diperlukan telah dimuat, buatlah objek kelas anak.
4. Jika kelas anak memiliki kelas induk, maka konstruktor dari kelas induk akan dipanggil. Anda dapat menggunakan super untuk menentukan konstruktor mana yang akan dipanggil.
Proses konstruksi dan urutan konstruksi kelas dasar sama dengan kelas turunan. Pertama, setiap variabel di kelas dasar diinisialisasi dalam urutan literal, dan kemudian konstruktor kelas dasar lainnya dieksekusi.
5. Inisialisasi data anggota subkelas sesuai urutan deklarasinya, dan jalankan konstruktor subkelas lainnya.