2020年8月16日 靜態初始化static
阿新 • • 發佈:2020-08-16
package com.atguigu.test03; /* * 一個類初始化時會先檢查它的父類是否初始化,如果父類沒有初始化,那麼會先初始化父類。因為一個類只要初始化一次。 * * (1)父類的初始化<clinit>() * ①父類的靜態變數的顯式賦值 * ②父類的靜態程式碼塊 * (2)子類的初始化<clinit>() * ①父類的靜態變數的顯式賦值 * ②父類的靜態程式碼塊 * * 特殊: * 靜態方法是不能被重寫的 */ public class TestClassInit { public static void main(String[] args) {/*Father f = new Father(); System.out.println("-------------------"); Son s = new Son();*/ Son s = new Son(); /*Father f = new Son();//多型引用 System.out.println("----------------"); f.assign();//靜態方法在編譯期間就確定了,不需要在執行時動態繫結 */ } } class Father{private static String info = assign(); static{ System.out.println("(1)父類的靜態程式碼塊"); } public static String assign(){ System.out.println("(3)assign()方法"); return "Father"; } } class Son extends Father{ private static String info = assign(); static{ System.out.println("(2)子類的靜態程式碼塊"); } public static String assign(){ System.out.println("(4)assign()方法"); return "Son"; } }