super()的正确语法?

时间:2013-12-20 06:07:20

标签: java superclass

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

假设我每小时都上课。它包含一个名为Hourly的构造函数,它具有参数“String name”和“double rate.UML版本如下:

+ Hourly(name:String,rate:double)

但是,“name”变量是Employee类的私有属性,其中每小时类与继承相关。我的意思是,UML显示一个清晰的箭头(不是钻石)从班级每小时开始并指向班级员工。

我如何编写构造函数Hourly ???

我有一个基本的骨架:

public Hourly(String name, double rate){


}

请帮我填写。

另外,请注意方法中有一个返回值。说我想要返回double rate。返回一些使用super()的正确语法是什么,因为我知道我不能简单地使用:

return this.rate;

4 个答案:

答案 0 :(得分:0)

您的Employee肯定有名字。

private String name;

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

在此之后,您的Hourly也必须有一个名字。由于Hourly是一个Employee,因此您也必须在其上设置名称。这样就完成了。

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

答案 1 :(得分:0)

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

public class Hourly {

  private double rate;

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

  public double getRate() {
    return rate;
  }
}

答案 2 :(得分:0)

如果Hourly是Employee的子类,如果你想将名称解析为超类(Employee),那么在你的Hourly构造函数中调用super(name);

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

答案 3 :(得分:0)

Hourly extends Employee

以来
    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
    }
    }