读取具有空值的字段

reading fields which have null value

我有一个摘要 class "Homework" 和其他 4 个 class 扩展它(我只粘贴了其中一个,因为它们是相同的)。程序可以编译,但输出如下所示: null - 必须阅读 0 页 null - 必须阅读 0 页 null - 必须阅读 0 页 null - 必须阅读 0 页

我应该更改什么才能使其正常工作?

测试员class

  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);
    }
}

摘要class家庭作业

 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";
 }
}

如果要更改 MyMath 中的 pagesReadtypeHomework 字段,您需要实际为这些字段赋值。

您只能在同一个 class 中分配私有字段 - 这些字段与父 class(es) 中的同名字段不同。

您也可以在父 class 中创建字段 protected,然后从子 class 中删除字段。