使用繼承時的注意點(瘋狂java講義P155)

public class Sub extends Father{java

public static void main(String[] args) {編程

Sub s = new Sub();ide

}spa

private String name ;指針

public void test(){對象

System.out.println("子類重寫父類的方法,其name字符串長度:"+name.length());字符串

}it

}io

class Father{class

public  Father(){

test();

}

public void test(){

System.out.println("將被子類重寫的方法");

}

}

當系統試圖建立Sub對象時,會先執行其父類構造器,若是父類構造器調用了被其子類重寫的的方法,則編程調用被子類重寫的方法。當建立Sub對象時,會先執行Base類中的Base構造器,而Base構造器中調用了test方法——並非調用父類的test()方法,而是調用子類的test()方法。此時,Sub對象的name屬性是null,所以將引起空指針異常。
Exception in thread "main" java.lang.NullPointerException
相關文章
相關標籤/搜索