Java知識の蓄積-静的コードブロック、非静的コードブロック、コンストラクタの実行順序と回数
3990 ワード
次の手順に従います.
出力は次のとおりです.
A static
B static
A not static
A new
B not static
B new
A not static
A new
B not static
B new
結論:
静的コードブロックは、クラスがメモリに最初にロードされたときに呼び出されるのは1回のみです.
非静的コードブロックは、オブジェクトを作成するたびに関数を構築する前に呼び出されます.
コンストラクション関数は、オブジェクトを作成するたびに最後に呼び出されます.
サブクラスオブジェクトを作成する場合は、親オブジェクトを作成してから、サブクラスオブジェクトを作成します.
1 class A {
2 static{
3 System.out.println("A static");
4 }
5
6 {
7 System.out.println("A not static");
8 }
9
10 public A(){
11 System.out.println("A new");
12 }
13 }
14
15 class B extends A{
16 static{
17 System.out.println("B static");
18 }
19
20 {
21 System.out.println("B not static");
22 }
23
24 public B(){
25 System.out.println("B new");
26 }
27 }
28
29 public class MainTest {
30 public static void main(String[] args) {
31 A ab= new B();
32 ab= new B();
33 }
34 }
出力は次のとおりです.
A static
B static
A not static
A new
B not static
B new
A not static
A new
B not static
B new
結論:
静的コードブロックは、クラスがメモリに最初にロードされたときに呼び出されるのは1回のみです.
非静的コードブロックは、オブジェクトを作成するたびに関数を構築する前に呼び出されます.
コンストラクション関数は、オブジェクトを作成するたびに最後に呼び出されます.
サブクラスオブジェクトを作成する場合は、親オブジェクトを作成してから、サブクラスオブジェクトを作成します.