Java 正在读取具有空值的字段
我有一个抽象类HomeWork和其他4个扩展它的类,我只粘贴了其中一个,因为它们是相同的。程序可以编译,但输出如下所示: null-必须读取0页 null-必须读取0页 null-必须读取0页 null-必须读取0页 我应该改变什么才能让它工作 测试级 我的数学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
如果希望更改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";
}
}