我在理解两个小任务方面有一些小问题。我会尽量做到具体,但我必须翻译所有德语内容,因此请记住这一点。任务是编写一种“培训游戏”,您可以在其中建立培训 class ,等等。
我的第一个任务是实现一个包含三种不同方法的接口:

  • void setCaloryGoal(int caloryGoal)->设置caloryGoal
  • int getCaloryGoal->返回caloryGoal
  • double getAchievementDegree->返回达成程度(燃烧卡路里/卡路里目标)

  • 比我们必须实现一个新的类TrainingsessionWithGoal,在其中您使用超类Trainingsession的构造函数,但是您必须添加caloryGoal,我不知道如何从接口实现它(我敢肯定,我们必须实现它与set-method。我当前的代码是这样的:
    public TrainingsessionWithGoal(int trainingtime, Fitnessdevice fitnessdevice, int day, int month, int year, int hh, int mm, int caloryGoal) {
        super(trainingtime, fitnessdevice, day, month, year, hh, mm);
        this.caloryGoal = caloryGoal;
    }
    

    这完全可以,但是我很确定,实现caloryGoal的方法不是正确的方法,因为我从不使用接口的set-method。有人对此有想法吗?

    在另一个任务中,我们必须创建一个新的类TrainingProgramm,在其中我们实现一个arraylist,其中填充了类Trainingsession和新类TrainingsessionWithGoal的不同对象,我绝对不知道如何处理。我搜索了所有内容,但找不到可以帮助我的东西。

    这是我到目前为止所拥有的:
    private ArrayList <Objects> list = new ArrayList <Objects> ();
    
    public TrainingProgramm (String programmName, ArrayList<Objects> list) {
        this.programmName = programmName;
        this.list = list;
    }
    

    但这显然行不通。如果有人可以引导我采取正确的方法,那将非常有帮助。

    最佳答案

    您可以按照Lino的建议更改ArrayList<Object> to ArrayList<? extends Trainingsession>。更好的是,为此使用您的(无论如何命名)接口。
    字段的类型和方法的参数应为List,而不是ArrayList。而且这些名称应正确命名-而不是列表,而是赋予它们更多的语义名称。这样,您就可以……。像这样:

    private List<YourInterface> sessions = new ArrayList <YourInterface> ();
    public TrainingProgramm (String programmName, List<TrainingSessionInterface> sessions) { ... }
    

    10-06 06:05