读取具有空值的字段

时间:2015-02-07 15:53:27

标签: java arraylist override abstract-class

我有一个抽象类" Homework"以及另外4个扩展它的类(我只粘贴了其中一个,因为它们是相同的)。程序编译,但输出如下: null - 必读0页 null - 必读0页 null - 必读0页 null - 必读0页

我应该改变什么才能让它发挥作用?

测试人员类

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

MYMATH

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

1 个答案:

答案 0 :(得分:0)

如果您希望更改这些字段,则需要为pagesRead中的字段typeHomeworkMyMath实际分配值。

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

您也可以在父类中创建字段protected,并从子类中删除字段。