夜何其 2020-04-03 20:14 采纳率: 0%
浏览 819
已采纳

Java 运行时异常,java.lang.NullPointerException

最近在刚刚学Java,刚刚学完继承和多态,现在在做一个作业遇到了困难。

我简单的说一下,父类Vegetable,子类Tomato继承父类,子类有构造方法Tomato(String name,boolean isProtected,Date d)

这是父类Vegetable的定义:

package Pixel;

import java.util.Date;

public class Vegetable {
    String name;
    public int SerialNumber;//每个植物的序列号
    public int productivity;
    static int id=0;
    Date WhentoGrow;
    public Vegetable(String name)
    {
        this.name=name;
        id++;
    }



}


子类:

package Pixel;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.util.Date;

public class Tomato extends Vegetable {
    boolean isProtected=true;
    public Tomato(String name,boolean Protected,Date d)
    {
        super(name);
        this.WhentoGrow=d;
        this.SerialNumber=super.id;
        isProtected=Protected;
        if(isProtected)productivity=10;
        else productivity=5;


    }
    private long GrowCycle=6*3600*1000 ;//一个番茄长6小时长出
    SimpleDateFormat When = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    final long millis=WhentoGrow.getTime();
    final long harvestmillis=millis+GrowCycle;




    }



在另一个class中做测试:

package Pixel;
import java.util.Date;
public class test {

    @SuppressWarnings("deprecation")
    public static void main(String []args)
    {
        Date t1=new Date(120,4,3,19,30,00);
        Date t2=new Date(120,4,3,19,30,00);
        //System.out.println(t1.getTime());
        Tomato fanqie=new Tomato("fanqie",true,t1);
        Tomato fanqie2=new Tomato("fanqie",false,t2);



    }
}

通过t1t2做参数d来构造番茄1,番茄二,编辑器此时没有报错,但是当我运行的时候他就报错了,错误信息是java.lang.NullPointerException,并提示问题语句在于Tomato 文件里面的this.WhentoGrow=d这句话。
上网查过了,基本上就是说某个类没有具体实例化,但是我这里的t1,t2都应new过了啊
真的很苦恼,求大神指教啊!

  • 写回答

2条回答 默认 最新

  • Json-Huang 2020-04-04 11:40
    关注

    父类字段要用super,即this.WhentoGrow=d;改成super.WhentoGrow=d;试试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?