扩展抽象类

经验丰富的

MyMath的构造函数应该调用Homework的构造函数,但是super(); 返回错误“找不到符号”。它不应该有任何参数。另外,我对如何使用arraylist调用方法createAssignment感到困惑,但是我必须使用它。有什么建议吗?

在家工作

public abstract class Homework {
    private int pagesToRead;
    private String typeHomework;

    public Homework(int pages, String hw) {
        // initialise instance variables
        pagesToRead = 0;
        typeHomework = "none";
    }

    public abstract void createAssignment(int p);

    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() {
        super();
    }

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

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

public class testHomework {
    public static void main(String[] args) {
        ArrayList<Homework> list = new ArrayList<Homework>();
        list.add(new MyMath(1));
        list.add(new MyJava(1));

        for (Homework s : list) {
            s.createAssignment();
        }
    }

}

编译器错误:

关于编译器错误,您必须将MyMath承包商更改为:

 public MyMath() {
        super(someInt, someString);
    }

或者,您可以向Homework类添加一个非arg构造函数:

 public Homework() {
        this(someInt,someString);
    }

您可以super()Javadocs tutoriel中了解有关关键字的信息

如果构造函数没有显式调用超类构造函数,则Java编译器会自动将调用插入到超类的无参数构造函数中。如果超类没有无参数构造函数,则会出现编译时错误。对象确实具有这样的构造函数,因此,如果对象是唯一的超类,就没有问题。

代码建议:

由于您的问题中还有许多其他问题,因此我修改了您的所有类,如下所示:

Homework.java:

public abstract class Homework {
    private int pagesToRead;
    private String typeHomework;

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

    public Homework(int pages, String hw) {

        this.pagesToRead = pages;
        this.typeHomework = hw;

    }

    public abstract void createAssignment(int p);

    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.java

public class MyMath extends Homework {

    private int pagesRead;
    private String typeHomework;

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

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

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

TestHomework.java:

class TestHomework {
    public static void main(String[] args) {
        ArrayList<Homework> list = new ArrayList<Homework>();

        // will create a homework with type Math and one page to read
        list.add(new MyMath(1,"Math"));

        // Assuming MyJava is similar to MyMath
        list.add(new MyJava(1,"Java"));


        for (Homework s : list) {

            if (s instanceof MyMath) {
            // modify the number of pages to read for the Math homework
            s.createAssignment(3);
            } else if (s instanceof MyJava) {
            // modify the number of pages to read for the Java homework
            s.createAssignment(5);
            } else {
            s.createAssignment(7);
            }
        }
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章