Java super()的正确语法?

Java super()的正确语法?,java,superclass,Java,Superclass,当我使用super()来使用超类方法时,正确的返回方式是什么 假设我每小时有一节课。它包含一个构造函数(也称为Hourly),该构造函数具有参数“String name”和“double rate”。UML版本如下所示: +每小时(名称:字符串,费率:双倍) 然而,“name”变量是Employee类的一个私有属性,它的类hourly通过继承与之相关。我的意思是UML显示了一个清晰的箭头(不是菱形),从类hourly开始指向类Employee 我将如何每小时编写构造函数 我有一个基本框架: pu

当我使用super()来使用超类方法时,正确的返回方式是什么

假设我每小时有一节课。它包含一个构造函数(也称为Hourly),该构造函数具有参数“String name”和“double rate”。UML版本如下所示:

+每小时(名称:字符串,费率:双倍)

然而,“name”变量是Employee类的一个私有属性,它的类hourly通过继承与之相关。我的意思是UML显示了一个清晰的箭头(不是菱形),从类hourly开始指向类Employee

我将如何每小时编写构造函数

我有一个基本框架:

public Hourly(String name, double rate){


}
请帮我填一下

另一方面,让我们假设方法中有一个返回。假设我想返回双倍速率的
。返回一些使用super()的方法的正确语法是什么,因为我知道我不能简单地使用:

return this.rate;

你的
员工肯定有名字

private String name;

public Employee(String name) {
    this.name = name;
}
接下来,您的
小时
还必须有一个名称。由于
小时
是一名
员工
,因此您也必须在其上设置名称。这是这样完成的

public Hourly(String name, double rate) {
    super(name);
    this.rate = rate;
}

根据您的注释,名称是由超类存储的;rate不是。因此,您应该在定义的
Hourly
类中存储rate,同时将名称传递给超级构造函数,如下所示:

public class Hourly {

  private double rate;

  public Hourly(String name, double rate) {
    super(name);
    this.rate = rate;
  }

  public double getRate() {
    return rate;
  }
}

如果Hourly是Employee的子类,并且如果您希望将名称解析为super类(Employee),那么在Hourly构造函数中调用super(name)


每小时延长员工时间以来

    class Hourly extends Employee {

    private int rate;

    public Hourly(String name, int rate) {
      super(name);  //assuming Employee has this constructor
      this.rate = rate;
    }

    //this make sense if name is protected and doesn't have getter in base class
    //ideally you would have this in base class itself
    public String getName() {
       return super.name; //for rate there is no sense in using super as it is not known to super class
    }
    }

Employee
superclass公开了哪些构造函数和访问器(“getter”)方法?getPay()和printPay(date:int)都没有多大帮助如果Hourly是Employee的子类,如果您想将名称解析为super class(Employee),那么在hourry构造函数中调用super(name);请用代码回答好吗?Employee类中是否有名称的setter,还是构造函数中的setter?
    class Hourly extends Employee {

    private int rate;

    public Hourly(String name, int rate) {
      super(name);  //assuming Employee has this constructor
      this.rate = rate;
    }

    //this make sense if name is protected and doesn't have getter in base class
    //ideally you would have this in base class itself
    public String getName() {
       return super.name; //for rate there is no sense in using super as it is not known to super class
    }
    }