本文共 904 字,大约阅读时间需要 3 分钟。
前提:SalariedEmployee
(月薪资) 和HourlyEmployee
(时薪资)子类继承Employee
的抽象父类,来获取父类里的属性/方法,并重写扩展为自己的方法。
先来看下我的报错情况:NullPointerException
System.out.println(month);
也就是24行之后; 空指针异常:是一个运行级别的异常,即只有在运行时才会抛出
在看到这个异常之后,我首先想我的数组是存在的,有没有初始化?有;访问的对象是否存在?存在;对象是否为空?应该不为空(结果是空的,草率了)NullPointerException
;
emps[0] = null; emps[1] = null;
首先我确定了数组有初始化后,其次new SalariedEmployee()
和new HourlyEmployee()
是没问题的;接着name/number/birthday
等的赋值操作都是调用的子类的toString()
方法; toString()
方法抛出了NullPointerException
; toString()
方法都是重写的父类的toString()
方法,但方法内部调用了super.toString();
Employee
的toString()
方法只是return
了 name,number,birthday.toDateString()
方法而已; birthday.toDateString()
方法,里面也只是return
了MyDate
的属性,且没有问题; Employee
的属性了,好吧,破案了!属性没有问题,构造器里空空如也,没有this
调用,所以当调用此构造器时,输入的name/number/birthday
将不能传给此时正在创建的对象,当然也就无法输出了; debug
很难搞,但debug
成功后还好:)转载地址:http://fyll.baihongyu.com/