在Java中创建类和方法

在Java中创建类和方法,java,class,methods,Java,Class,Methods,这是我在这里的第一篇帖子,所以如果没有人会因为我的问题而生气,希望是因为我的英语…这不是我的母语:D 对该问题: 对于我在大学的课程,我必须编写一个健身应用程序(它在未来会变得更大)。现在,我必须尽可能地设置一些类和方法,我已经这样做了。以下是一个例子: public class Trainingsession { private int workoutTime; private int date; private int startingtime; priva

这是我在这里的第一篇帖子,所以如果没有人会因为我的问题而生气,希望是因为我的英语…这不是我的母语:D

对该问题: 对于我在大学的课程,我必须编写一个健身应用程序(它在未来会变得更大)。现在,我必须尽可能地设置一些类和方法,我已经这样做了。以下是一个例子:

public class Trainingsession {

    private int workoutTime;
    private int date;
    private int startingtime;
    private Fitnessequipment fitnessequipment;
    private int neededWorkoutTime;


    public Trainingsession(int workoutTime, int date, int startingtime, Fitnessequipment fitnessequipment) {
        this.workoutTime = workoutTime;
        this.date = date;
        this.startingtime = startingtime;
    }

    public boolean goalReached (int caloryGoal) {
        return (fitnessequipment.caloryConsumption(workoutTime) >= caloryGoal))
    }

    // ...

}
public void setWorkoutTime(int newWorkoutTime) {
    workoutTime = newWorkoutTime;
}
当我设置方法
goalReached
时,我是否必须首先设置
caloryGoal
,以及其他属性,如
date
startingtime
等。?
我的问题是,有些属性是给定的,但我不知道,如果我必须通过查看方法来添加其他属性…

作为对您问题的一般回答:

caloryGoal
是一个参数,不需要“设置”,它由方法的调用者提供

您需要确保提供了
fitnessequipment.calorycommunition
所需的一切(例如,
fitnessequipment
处于有效状态),以使该方法正常工作


根据经验,最好不要创建在调用其方法时会导致运行时异常的对象。如果有人在使用你的API时没有编写API,他们就不会知道哪些字段是必填字段,除非构造函数中需要这些字段。

我希望我没有误解你的问题,但下面是:

caloryGoal
是由调用的对象传入的参数
goalReached()
,因此caloryGoal不需要在构造函数中初始化。如果在调用构造函数后需要指定对象中的值(例如,如果在实例化该值后了解该值应该是什么),则可以使用setter方法。下面是一个例子:

public class Trainingsession {

    private int workoutTime;
    private int date;
    private int startingtime;
    private Fitnessequipment fitnessequipment;
    private int neededWorkoutTime;


    public Trainingsession(int workoutTime, int date, int startingtime, Fitnessequipment fitnessequipment) {
        this.workoutTime = workoutTime;
        this.date = date;
        this.startingtime = startingtime;
    }

    public boolean goalReached (int caloryGoal) {
        return (fitnessequipment.caloryConsumption(workoutTime) >= caloryGoal))
    }

    // ...

}
public void setWorkoutTime(int newWorkoutTime) {
    workoutTime = newWorkoutTime;
}

调用此方法后,
workoutTime
将具有作为
newWorkoutTime

传入的值。您描述的函数的用途有点不清楚。 如果我理解正确,那么goalReached是一个函数,它接收一个数字并返回true iff caloryGoal>=在这个会话(本实例)中燃烧的卡路里。 因此,它应该看起来有点像这样:

public boolean goalReached (int caloryGoal) {
    return (this.caloryConsumption(workoutTime) >= caloryGoal))
}
当CaloryConsument将是一个函数时,它将返回每个会话消耗的卡路里的实例。为此,我添加了一个名为“卡路里许可”的新字段,该字段将指示运动每分钟燃烧多少卡路里,并更新构造器。然后在热量许可证中,我会加上计算。
基本上你需要知道你想要什么。也许写合同会对你有所帮助。

对不起,我不明白。调用goalReached的任何方法都会传入caloryGoal值。但为什么是这个。caloryComsumption?caloryConsumption是另一个类中的一个属性,使用“fitnessequipment.caloryConsumption”我可以访问该属性,对吗?我不知道您的项目中还有更多的类。但是当你调用fitnessequipment.caloryConsumption(workoutTime)时,workoutTime是一个参数,而不是一个文件名,所以我相信这是正确的语法:fitnessequipment.caloryConsumption(this.workoutTime)