Java繼承一個注意的地方

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類型的

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