java包括繼承的類的初始化全過程

/*
新建兩個類,父類Father和子類Son,爲了觀察實驗效果,各自創建一個printInit()
方法,此方法打印信息,並可以返回我們需要的一個初始值。

1.首先訪問InitOrder.main()(static方法);
2.然後加載Son類,發現其繼承自Fatherl類,繼續加載Father類(如果還有基類,繼續向上加載);
3.初始化Father類的static成員,此時Father類的普通成員置爲默認值(int型置之爲0);
4.然後初始化子類Son的static成員,同樣Son類的普通成員置爲默認值;
5.然後分別初始化Father的普通成員和構造器;
6.最後初始化Son的普通成員和構造器。

初始化順序優先級
同一個類中優先級:
static成員 > 普通成員 > 構造器
類之間:
父類 > 子類

*/
import static com.tiantian.Print.*;
class Father{
 private int age = printInit("2.Father's age.");
 private static int weight = printInit("1.Father's weight.");
 Father(){
  
  println("3.Father's age is "+age);
 }
 private static int printInit(String str){
  println(str);
  return 57;
 }
}

class Son extends Father{
 private int age = printInit("2.Son's age.");
 private static int weight = printInit("1.Son's weight.");
 Son(){
  
  println("3.Son's age is "+age);
 }
 private static int printInit(String str){
  println(str);
  return 24;
 }
}
public class InitOrder{
 public static void main(String[] args){
  new Son();
 }
}
/*
程序輸出如下:
1.Father's weight.
1.Son's weight.
2.Father's age.
3.Father's age is 47
2.Son's age.
3.Son's age is 22

*/

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