Rumah >Java >javaTutorial >Apakah susunan permulaan kelas Java

Apakah susunan permulaan kelas Java

WBOY
WBOYke hadapan
2023-04-19 09:04:061390semak imbas

Jujukan permulaan kelas Java

Tidak berguna untuk mengatakan lebih lanjut. Berikut adalah kod yang saya uji secara peribadi, yang jelas sekali imbas:

 1 package test1;
 2 
 3 public class Test {
 4     public static void main(String[] argc) {
 5         new Child();
 6         System.out.println("================================");
 7         new Child();
 8     }
 9 }
10 
11 class Child extends Parent{
12     private static String staticField = getStaticField();
13     static {
14         System.out.println("child静态方法块初始化");
15     }
16     private String field = getField();
17     {
18         System.out.println("child普通方法块初始化");
19     }
20 
21     public Child() {
22         System.out.println("child构造函数初始化");
23     }
24 
25     public static String getStaticField() {
26         System.out.println("child静态属性初始化");
27         return "staticField";
28     }
29 
30     public static String getField() {
31         System.out.println("child普通属性初始化");
32         return "field";
33     }
34 }
35 
36 class Parent {
37     private static String staticField = getStaticField();
38     static {
39         System.out.println("parent静态方法块初始化");
40     }
41     private String field = getField();
42     {
43         System.out.println("parent普通方法块初始化");
44     }
45 
46     public Parent() {
47         System.out.println("parent构造函数初始化");
48     }
49 
50     public static String getStaticField() {
51         System.out.println("parent静态属性初始化");
52         return "staticField";
53     }
54 
55     public static String getField() {
56         System.out.println("parent普通属性初始化");
57         return "field";
58     }
59 }

Hasil cetakan:

 1 parent静态属性初始化
 2 parent静态方法块初始化
 3 child静态属性初始化
 4 child静态方法块初始化
 5 parent普通属性初始化
 6 parent普通方法块初始化
 7 parent构造函数初始化
 8 child普通属性初始化
 9 child普通方法块初始化
10 child构造函数初始化
11 ================================
12 parent普通属性初始化
13 parent普通方法块初始化
14 parent构造函数初始化
15 child普通属性初始化
16 child普通方法块初始化
17 child构造函数初始化

Dengan menggantikan susunan pengisytiharan atribut statik dan blok pemula statik, didapati bahawa susunan pemula bagi atribut statik dan blok pemula statik adalah berkaitan dengan susunan pengisytiharan Begitu juga, susunan pemula bagi atribut biasa dan blok pemula biasa adalah berkaitan dengan perintah pengisytiharan.

Ringkasan:

  1. Apabila kelas memenuhi syarat untuk permulaan (akan diringkaskan dalam blog akan datang), kelas induk akan dimulakan terlebih dahulu (memulakan daripada Objek kelas induk teratas ke bawah), dan kemudian subkelas akan dimulakan

  2. Apabila memulakan kelas ini, sifat statik dan blok permulaan statik dimulakan terlebih dahulu (berkaitan dengan susunan pengisytiharan), dan dimulakan ke bawah daripada Objek kelas induk peringkat atas; Apabila mencipta objek melalui baharu, mula-mula mulakan sifat biasa dan blok permulaan biasa (berkaitan dengan susunan pengisytiharan), dan kemudian panggil kaedah pembina, juga melaksanakan ke bawah daripada Objek kelas induk peringkat atas

  3. Sifat statik dan blok permulaan statik hanya akan dimulakan sekali Selepas kelas dimulakan, mencipta objek melalui baharu semula hanya akan mengulangi langkah ketiga.

  4. Seterusnya ialah petikan daripada idea pengaturcaraan Java:

Dalam kelas, susunan definisi pembolehubah menentukan susunan permulaan Walaupun definisi pembolehubah tersebar di antara definisi kaedah, mereka masih akan dimulakan sebelum sebarang kaedah (termasuk pembina) dipanggil.

Atas ialah kandungan terperinci Apakah susunan permulaan kelas Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam