读取具有空值的字段
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
中的 pagesRead
和 typeHomework
字段,您需要实际为这些字段赋值。
您只能在同一个 class 中分配私有字段 - 这些字段与父 class(es) 中的同名字段不同。
您也可以在父 class 中创建字段 protected
,然后从子 class 中删除字段。
我有一个摘要 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
中的 pagesRead
和 typeHomework
字段,您需要实际为这些字段赋值。
您只能在同一个 class 中分配私有字段 - 这些字段与父 class(es) 中的同名字段不同。
您也可以在父 class 中创建字段 protected
,然后从子 class 中删除字段。