本文順接上一篇文章
如果一個類繼承自一個類,這個類的含有成員變量並且賦初值
則:成員變量在聲明後先會賦默認值,父類構造方法執行完畢之後再執行賦初值。
成員對應的默認值
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
char | 空格 |
boolean | false |
看代碼吧,雖然喜歡看總結好的文字,要真正的理解還是要靠代碼
public class Main
{
public static void main(String[] args)
{
Parent parent = new Child();
Child child = new Child();
// parent向上轉型,引用Parent中的變量。
System.out.println("parent + child = " + (parent.pi + child.pi));// 注意要括號起來,否則隱式轉換爲String類型
}
}
class Parent
{
int pi = 5;
public Parent()
{
show();
}
public void show()
{
System.out.println("Parent.show" + pi);
}
}
class Child extends Parent
{
int i = 10;
int pi = 50; // 當父類
{
i++;
// j++; Cannot reference a field before it is defined,級別相同,有先後順序
System.out.println("構造代碼塊:" + i);
}
int j =0;
public Child()
{
// super();// i == 0;當調用父類的構造方法的時候,變量i賦值爲默認值
// 父類構造方法執行完畢開始執行成員屬性賦值,構造方法塊
show();
}
public void show()
{
i++;
System.out.println("Child.show" + i);
System.out.println("Child.show" + pi);
}
}