Java 我需要为此使用实例变量吗?

Java 我需要为此使用实例变量吗?,java,object,Java,Object,我目前正在做讲师给我的Java编码练习。然而,这有点让人困惑,我不知道我该怎么做 练习的部分如下所示: 根据以下规范创建抽象类Employee类: -私有实例变量“name”(字符串),用于存储员工姓名 -采用要创建的员工姓名的构造函数 -一个公共方法getName,返回员工的姓名 -一个公共方法getWorkingHoursPerWeek,返回员工每周的工作小时数(一个整数,默认为40) -一个公共方法getSalary,返回员工的工资(一个整数,默认为11000) -一个公共方法getVac

我目前正在做讲师给我的Java编码练习。然而,这有点让人困惑,我不知道我该怎么做

练习的部分如下所示:
根据以下规范创建抽象类Employee类:
-私有实例变量“name”(字符串),用于存储员工姓名
-采用要创建的员工姓名的构造函数
-一个公共方法getName,返回员工的姓名
-一个公共方法getWorkingHoursPerWeek,返回员工每周的工作小时数(一个整数,默认为40)
-一个公共方法getSalary,返回员工的工资(一个整数,默认为11000)
-一个公共方法getVacationDays,返回员工的休假天数(整数,默认为10)
-一个抽象的公共方法jobDuty,返回员工的工作职责(字符串);和
-一个抽象的公共方法jobTitle,返回员工的职务(字符串)

我是否应该为每周的工作时间创建一个实例变量?为什么有一个方法可以为不存在的东西返回值??我是否只是将其返回为40,对于以后的子类,我是否更改了该值

public abstract class Employee {
    private String name;

    public Employee(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public int getWorkingHoursPerWeek(){
        return 40;
    }

    public abstract String jobDuty(String duty);

    public abstract String jobTitle(String title);
}
遗产 在Java中,抽象类应该直接实例化。相反,应该创建一个继承自它的子类

在本例中,我将推断出您的
Employee
抽象类将有子类

子类可以覆盖其父类的方法。对于抽象方法,它们必须重写它们(除非子类也是抽象的)

因此,我认为按照您使用
getWorkingHoursPerWeek
所做的说明进行操作是可以的,如果需要,子类可以重写该方法

我是否只是将其返回为40,对于以后的子类,我是否更改了该值

public abstract class Employee {
    private String name;

    public Employee(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public int getWorkingHoursPerWeek(){
        return 40;
    }

    public abstract String jobDuty(String duty);

    public abstract String jobTitle(String title);
}
我假设,这是对您的要求,基于这是一个抽象类的事实,以及他们指定提及一个实例变量,而没有提及他们想要其他实例变量的事实

为什么有一个方法可以为不存在的东西返回值?? 大宗报价

您可以将默认值设置为私有变量(例如,
private final String workinghours perweek
),但这不是必需的,因为这些值将仅用作默认返回值

我是否只是将其返回为40,对于以后的子类,我是否更改了该值

public abstract class Employee {
    private String name;

    public Employee(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public int getWorkingHoursPerWeek(){
        return 40;
    }

    public abstract String jobDuty(String duty);

    public abstract String jobTitle(String title);
}

是的,您可以重写Java中的方法,这样您就可以向继承自
Employee

的类添加更多的逻辑和状态,只需返回40即可。您正在创建一个抽象类,因此根据员工类型的不同,您的子类可能会有更好的实现。您被告知创建一个实例变量
name
,但没有被告知创建一个实例变量
workinghoursburweek
。我不知道这是否也意味着禁止创建实例变量,你可以自己判断。我认为你应该每周创建一个实例变量
workinghours
,并直接或在构造函数中使用
40
初始化它。。。如果禁止创建实例变量,则只需
返回40,正如您所做的…“我会推断”,鉴于它是一个抽象类,我认为您可以做的远不止推断;)@JoakimDanielson:你是对的,但我喜欢清楚我的假设和推论,因此当我犯错误时,更容易知道哪些知识(基于假设)应该放弃或重新考虑。