在繼承關(guān)系中,靜態(tài)塊、游離塊、構(gòu)造器、靜態(tài)方法、靜態(tài)變量、變量等的加載順序是如何的呢?!讓代碼來告訴我們,結(jié)果如下:
父類靜態(tài)塊
子類靜態(tài)塊
父類變量
父類靜態(tài)變量
父類游離塊
父類構(gòu)造器
子類變量
子類靜態(tài)變量
子類游離塊
子類的構(gòu)造器
驗(yàn)證的代碼:
package com.jlq.test;
public class Test1 {
private static String s1 = "父類靜態(tài)變量";
private String s2 = "父類變量";
public Test1() {
System.out.println("父類構(gòu)造器");
}
/**
* 靜態(tài)代碼塊
*/
static {
System.out.println("父類靜態(tài)塊");
}
/**
* 游離塊
*/
{
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 = "子類靜態(tài)變量";
private String s2 = "子類變量";
/**
* 靜態(tài)代碼塊
*/
static {
System.out.println("子類靜態(tài)塊");
}
/**
* 游離塊
*/
{
System.out.println(s2);
System.out.println(s1);
System.out.println("子類游離塊");
}
public TestChild() {
System.out.println("子類的構(gòu)造器");
}
}
public class Test1 {
private static String s1 = "父類靜態(tài)變量";
private String s2 = "父類變量";
public Test1() {
System.out.println("父類構(gòu)造器");
}
/**
* 靜態(tài)代碼塊
*/
static {
System.out.println("父類靜態(tài)塊");
}
/**
* 游離塊
*/
{
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 = "子類靜態(tài)變量";
private String s2 = "子類變量";
/**
* 靜態(tài)代碼塊
*/
static {
System.out.println("子類靜態(tài)塊");
}
/**
* 游離塊
*/
{
System.out.println(s2);
System.out.println(s1);
System.out.println("子類游離塊");
}
public TestChild() {
System.out.println("子類的構(gòu)造器");
}
}