Java static變量、做用域、構造函數初始化順序

/**
 *
 * 
 * @author wxy
 * @date 2018年10月30日 下午1:45:02 
 */
public class StaticTest {

  public static void main(String[] args) {
    SubClazz sub = new SubClazz();

  }
  
}
class SupClazz {
  private static String supStaticStr = "父類-靜態-變量";
  
  private String supNormnalStr = "父類-普通-變量";
  
  static {
    System.out.println(supStaticStr);
    System.out.println("父類-靜態-域");
  }
  
  {
    System.out.println(supNormnalStr);
    System.out.println("父類-普通-域");
  }
  
  public SupClazz() {
    System.out.println("父類-構造函數");
  }
}

class SubClazz extends SupClazz {
  private static String subStaticStr = "子類-靜態-變量";
  
  private String subNormnalStr = "子類-普通-變量";
  
  static {
    System.out.println(subStaticStr);
    System.out.println("子類-靜態-域");
  }
  
  {
    System.out.println(subNormnalStr);
    System.out.println("子類-普通-域");
  }
  
  public SubClazz() {
    System.out.println("子類-構造函數");
  }
}

輸出:函數

父類-靜態-變量
父類-靜態-域
子類-靜態-變量
子類-靜態-域

父類-普通-變量
父類-普通-域
父類-構造函數

子類-普通-變量
子類-普通-域
子類-構造函數
備註:「靜態變量和靜態做用域」,「常規變量和常規做用域」的前後順序等同於代碼出現的前後順序。
相關文章
相關標籤/搜索