Java 正在读取具有空值的字段

Java 正在读取具有空值的字段,java,arraylist,overriding,abstract-class,Java,Arraylist,Overriding,Abstract Class,我有一个抽象类HomeWork和其他4个扩展它的类,我只粘贴了其中一个,因为它们是相同的。程序可以编译,但输出如下所示: null-必须读取0页 null-必须读取0页 null-必须读取0页 null-必须读取0页 我应该改变什么才能让它工作 测试级 我的数学 如果希望更改MyMath中的pagesRead和TypeHomegram字段,则需要实际为这些字段赋值 只能在同一类中分配私有字段-这些字段是不同的字段,与父类中的相同命名字段相同 您也可以在父类中保护字段,并从子类中删除字段。从MyM

我有一个抽象类HomeWork和其他4个扩展它的类,我只粘贴了其中一个,因为它们是相同的。程序可以编译,但输出如下所示: null-必须读取0页 null-必须读取0页 null-必须读取0页 null-必须读取0页

我应该改变什么才能让它工作

测试级

我的数学


如果希望更改MyMath中的pagesRead和TypeHomegram字段,则需要实际为这些字段赋值

只能在同一类中分配私有字段-这些字段是不同的字段,与父类中的相同命名字段相同


您也可以在父类中保护字段,并从子类中删除字段。

从MyMath类中删除成员变量pagesRead,TypeHome作业-您正在对它们进行阴影处理。然后,将toString方法移动到家庭作业类,或者在MyMath中的toString方法中使用GetTypeHomegram和getPages。此外,这不是“方法重写返回[ing]null”,而是读取具有null值的字段。谢谢,它解决了此问题。
  public class testHomework
  {
    public static void main(String[] args) {
    ArrayList<Homework> list = new ArrayList<Homework>();

    list.add(new MyMath(1,"Math"));
    list.add(new MyEnglish(3,"English"));
    list.add(new MyJava(3,"Java"));
    list.add(new MyScience(2,"Science"));


    for (Homework s : list) 
    {
        System.out.println(s);
    }
}
 public abstract class Homework 
 {
   private int pagesToRead;
   private String typeHomework;

  {
    // initialise instance variables
    pagesToRead = 0;
    typeHomework = "none";
  }

  public Homework(int pages, String hw)
  {
      pagesToRead = pages;
      typeHomework = hw;
  }

  public abstract void createAssignment(int pages);

  public int getPages() 
 {
    return pagesToRead;
 }

  public void setPagesToRead(int p) 
 {
     pagesToRead = p;
 }

  public String getTypeHomework() 
 {
     return typeHomework;
 }

  public void setTypeHomework(String hw)
 {
     typeHomework = hw;
 }
public class MyMath extends Homework 
{

 private int pagesRead;
 private String typeHomework;

 public MyMath(int pages, String hw)
 {
    super(pages,hw);
 }

 public void createAssignment(int pages) 
 {
    setTypeHomework("Math");
    setPagesToRead(pages);
 }

 public String toString() 
 {
     return typeHomework + " - must read " + pagesRead + " pages";
 }
}