Java 屬性賦值順序

TL;DR

  1. 默認初始化;
  2. 顯示初始化/代碼塊中賦值
  3. 構造器中初始化
  4. 對象.屬性或對象.方法

代碼

Grandfather 類:

package com.mindartisan.priority;

public class Grandfather {
    static {
        System.out.println("爺爺的靜態代碼塊");
    }
    {
        System.out.println("爺爺的普通代碼塊");
    }
    public Grandfather() {
        System.out.println("爺爺的無參構造器");
    }
}

Father 類:

package com.mindartisan.priority;

public class Father extends Grandfather {
    static {
        System.out.println("爸爸的靜態代碼塊");
    }
    public Father() {
        System.out.println("爸爸的無參構造器");
    }
    {
        System.out.println("爸爸的普通代碼塊");
    }
    public Father(String message) {
        this();
        System.out.println("爸爸的無參構造器,傳入參數爲:"+ message);
    }

}

Son 類:

package com.mindartisan.priority;

public class Son extends Father {
    String name;
    int age = 18;

    public Son(){
        //通過super調用父類中有一個字符串參數的構造器
        super("Jobs");
        System.out.println("兒子的構造器");
    }
    public Son(int a){
        age=a;
    }
    public void setAge(int a) {
        this.age = a;
    }

    static{
        System.out.println("兒子的靜態代碼塊");
    }
    {
        System.out.println("兒子的普通代碼塊");
    }
}

Test 類:

package com.mindartisan.priority;

public class Test {
    public static void main(String[] args) {
        Son son = new Son();
        System.out.println(son.age);
        Son son1 = new Son(19);
        System.out.println(son1.age);
        son1.setAge(20);
        System.out.println(son1.age);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章