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啊!
爲什麼子類可以這樣訪問父類的成員變量?
真的凌亂了!
大神看到,能否指教以下?
**********************************************************************************************************************************************************