靜態屬性調用問題

一個父類定義了static靜態代碼塊,且有一個靜態變量value;子類實現(implements)父類,子類中也有靜態代碼塊,那麼直接調用子類.value輸出內容是什麼呢?

且看代碼:

package com.example.classloading;

public class SuperClass {
	static {
		System.out.println("SuperClass init!!!");
	}
	
	public static int value = 123;
}


package com.example.classloading;

public class ChildClass extends SuperClass {

	static {
		System.out.println("ChildClass init !!!");
	}
}


package com.example.classloading;

/**
 * 對於靜態字段,只有直接定義這個字段的類纔會被初始化
 * @author yanup
 *
 */
public class Test {
	public static void main(String[] args) {
		System.out.println(ChildClass.value);
	}
}

大家能猜到最終打印的是什麼麼?

 

 

 

SuperClass init!!!
123

驚不驚喜,意不意外,不錯,只打印了父類中的靜態代碼塊和value值;

總結如下:對於靜態字段,只有直接定義這個字段的類纔會被初始化!!!!切記切記切記,重要的事情說三遍!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章