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