在繼承關系中,靜態塊、游離塊、構造器、靜態方法、靜態變量、變量等的加載順序是如何的呢?!讓代碼來告訴我們,結果如下:
父類靜態塊
子類靜態塊
父類變量
父類靜態變量
父類游離塊
父類構造器
子類變量
子類靜態變量
子類游離塊
子類的構造器
驗證的代碼:
package com.jlq.test;
public class Test1 {
private static String s1 = "父類靜態變量";
private String s2 = "父類變量";
public Test1() {
System.out.println("父類構造器");
}
/**
* 靜態代碼塊
*/
static {
System.out.println("父類靜態塊");
}
/**
* 游離塊
*/
{
System.out.println(s2);
System.out.println(s1);
System.out.println("父類游離塊");
}
public static void main(String[] args) {
new TestChild();
}
}
class TestChild extends Test1 {
private static String s1 = "子類靜態變量";
private String s2 = "子類變量";
/**
* 靜態代碼塊
*/
static {
System.out.println("子類靜態塊");
}
/**
* 游離塊
*/
{
System.out.println(s2);
System.out.println(s1);
System.out.println("子類游離塊");
}
public TestChild() {
System.out.println("子類的構造器");
}
}