黑马程序员技术交流社区

标题: 不懂得地方 [打印本页]

作者: 赵方明    时间: 2012-6-19 19:00
标题: 不懂得地方
本帖最后由 赵方明 于 2012-6-19 19:32 编辑

class Base
{
public Base()
{
  test();
}
public void test() //1号
{
System.out.println("将被子类重写的方法");
}
}
public class Sub extends Base
{
private String name;
public void test()//2号
{
System.out.println("子类重写父类的方法,"+”其name字符串长度“+name.length());
}
public static void main(String [] args)
{
Sub s=new Sub();
}
}
系统创建Sub对象时,会先执行父类构造器,Base构造器调用2号test方法,引发空指针异常,为什么?
如何修改使他正确?


作者: 唐辉辉    时间: 2012-6-19 19:10
本帖最后由 唐辉辉 于 2012-6-19 21:00 编辑

是length()方法的问题,因为你还没有给name初始化,java自动初始化的为null,所以在调用length()方法报空指针异常。

另外:请把length改成length(),length是取数组的长度
作者: 陆强强    时间: 2012-6-19 19:28
字符串没有length,只有length()
作者: 李伟    时间: 2012-6-19 20:59
private String name;
初始化为name=null.
所以name.length()就会出现空指针异常
作者: 王月    时间: 2012-6-19 21:45
创建对象时,name会初始化为null,既然是空怎么会有长度呢,所以肯定会报错啊





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2