TL;DR
- 默認初始化;
- 顯示初始化/代碼塊中賦值
- 構造器中初始化
- 對象.屬性或對象.方法
代碼
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);
}
}