java-爲什麼可以這樣訪問父類的中的變量?

public class SuperPerson extends Father {

static int ssp = 10;
int sbf = 11;


static {
System.out.println("SuperPerson類的靜態代碼塊!" + (ssp + 10));
// System.out.println("SuperPerson類的動態代碼塊!"+(sp+10)); //不能在靜態代碼區使用非靜態變量
}


{
// int sbf = 11; //這個聲明是沒有意義的!
System.out.println("SuperPerson類的動態代碼塊!" + (ssp + 10));
System.out.println("SuperPerson類的動態代碼塊!" + (spf + 10)); // 我凌亂了,居然使用的是父類的spf!沒有通過super訪問了父類的成員變量!


// int sp = 21; //這個聲明是沒有意義的!
}


public SuperPerson() {
System.out.println("SuperPerson類的構造方法!");
}


public static void main(String[] args) {
new SuperPerson();
}


}


class Father {
public Father() {
System.out.println("Father類的構造方法!");
}


static int ssp = 10;
int spf = 24;


static {
// System.out.println("SuperPerson類的靜態代碼塊!");
System.out.println("Father類的靜態代碼塊!" + (ssp + 10));
// System.out.println("SuperPerson類的動態代碼塊!"+(sp+10)); //不能在靜態代碼區使用非靜態變量
}


{
System.out.println("Father類的動態代碼塊!" + (ssp + 10));
System.out.println("Father類的動態代碼塊!" + (spf + 10));
}


}


以下是程序運行的輸出結果!

Father類的靜態代碼塊!20
SuperPerson類的靜態代碼塊!20
Father類的動態代碼塊!20
Father類的動態代碼塊!34
Father類的構造方法!
SuperPerson類的動態代碼塊!20
SuperPerson類的動態代碼塊!34
SuperPerson類的構造方法!


********************************************************************************************************************************************************

Father類的動態代碼塊!34

爲什麼是34?

sbf變量是在父類中定義的啊?子類中定義的 int sbf = 11啊!

爲什麼子類可以這樣訪問父類的成員變量?

真的凌亂了!

大神看到,能否指教以下?


**********************************************************************************************************************************************************










發佈了33 篇原創文章 · 獲贊 11 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章