先說結果
- 1. 父類靜態成員和靜態初始化塊 ,按在代碼中出現的順序依次執行
- 2. 子類靜態成員和靜態初始化塊 ,按在代碼中出現的順序依次執行
- 3. 父類實例成員和實例初始化塊 ,按在代碼中出現的順序依次執行
- 4. 父類構造方法
- 5. 子類實例成員和實例初始化塊 ,按在代碼中出現的順序依次執行
- 6. 子類構造方法
一個例子:
public class fa {
fa(){
print();
}
void print(){
int main =3;
System.out.println("this is 3 "+main);
}
}
public class test extends fa{
private String main ="12312";
test(){
print();
}
void print(){
System.out.println("this is 3 "+main);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new test();
}
}
結果如下
先執行父類構造方法,其中的print方法中的main爲空之後執行子類實例成員和實例初始化塊 ,main賦值最後執行子類構造方法
構造方法的繼承
1、子類的構造過程中必須調用其基類的構造方法。
2、子類可以在自己的構造方法中使用super(argument_list)調用基類的構造方法。
2.1、使用this(argument_list)調用本類的另外構造方法。
2.2、如果調用super,必須寫在子類構造方法的第一行。
3、如果子類的構造方法中沒有顯示的調用基類的構造方法,則系統默認調用基類的無參數構造方法。
4、如果子類構造方法中既沒有顯示調用基類構造方法,而基類又沒有無參數的構造方法,則編譯出錯。
屬性的繼承
- 父類子類有相同屬性時,是在父類基礎上添加而非覆蓋。
- 方法和屬性調用時,是從當前類開始一直向上查找。找到就停止。
- 調用的是誰的方法,查找的起點就是誰。所以,準確判斷是哪個類的方法很重要。