A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 赵方明 中级黑马   /  2012-6-19 19:00  /  1571 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵方明 于 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方法,引发空指针异常,为什么?
如何修改使他正确?

5 个回复

倒序浏览
本帖最后由 唐辉辉 于 2012-6-19 21:00 编辑

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

另外:请把length改成length(),length是取数组的长度
回复 使用道具 举报
字符串没有length,只有length()
回复 使用道具 举报
private String name;
初始化为name=null.
所以name.length()就会出现空指针异常
回复 使用道具 举报
创建对象时,name会初始化为null,既然是空怎么会有长度呢,所以肯定会报错啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马