使用继承时的注意点(疯狂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
相关文章
相关标签/搜索