在构造方法中调用被子类重写的方法抛出异常
代码抛出的异常,是因为父类构造方法调用了被子类重写的方法test(),
这里不在执行父类的test()方法,而是子类的test()方法。
我想这应该与对象在内存中的结构有关,所以问题如下:
1,Sub s = new Sub();时内存的结构是怎么样的?
2,书上例子前有句话,“不用在父类中调用被子类重写的方法”,这句话是否可以改为“不能。。。”?
class Base
{
public Base()
{
test();
}
public void test()
{
System.out.println("将被子类重写的方法");
}
}
class Sub extends Base
{
private String name;
public void test()
{
System.out.println("子类重写父类的方法,其name字符串长度" + name.length());
}
public static void main(String[] args)
{
//下面代码会引发空指针异常
Sub s = new Sub();
}
}