1. 程式人生 > 實用技巧 >2020年8月16日 靜態初始化static

2020年8月16日 靜態初始化static

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"; } }