public class Sub extends Father{

public static void main(String[] args) {

Sub s = new Sub();

}

private String name ;

public void test(){

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

}

}

class Father{

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