class Base
{
private Base()
{
}
public Base(String str)
{
test();
}
private void test() //①號test方法
{
System.out.println("將被子類重寫的方法");
}
}
public class Sub extends Base
{
/**
* @param str
*/
public Sub(String str)
{
super(str);
// TODO Auto-generated constructor stub
}
private<span style="color:#ff0000;"> static</span> String name;
public void test() //②號test方法
{
System.out.println("子類重寫父類的方法,"
+ "其name字符串長度" + name.length());
}
public static void main(String[] args)
{
Sub s = new Sub(<span style="color:#ff0000;">name</span>);
}
}
可以看到輸出結果將是“將被子類重寫的方法”
解釋:因爲1號test方法是被private修飾的,所以不能被子類繼承,與2號的test方法並不構成重寫關係,因此並不會發生空指針異常
這裏要注意紅色部分需要定義成static類型的