/**不懂为什么会引发空指针异常
* Description:
* <br/></a>
* @author
* @version 1.0
*/
class Base
{
public Base()
{
test();
}
public void test() //①号test方法
{
System.out.println("将被子类重写的方法");
}
}
public class Sub extends Base
{
private String name;
public void test() //②号test方法
{
System.out.println("子类重写父类的方法,"
+ "其name字符串长度" + name.length());
}
public static void main(String[] args)
{
//下面代码会引发空指针异常
Sub s = new Sub();
}
}
/*系统试图创建Sub对象时,会先执行父类构造器,又因为父类构造器调用了被子类重写的方法,则变成调用被子类重写的方法,创建Sub对象后,调用了test方法,实际上是调用2号test方法,此时Sub对象的name实例变量是null,因此引发空指针异常
一般来说,在调用某个对象之前,要进行非空的验证,否则就容易出空指针异常。 */
“`