繁体   English   中英

super()的正确语法?

[英]Proper syntax for super()?

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

假设我有一小时的课。 它包含一个也称为Hourly的构造函数,其参数为“字符串名称”和“双倍速率”。UML版本如下所示:

+小时(名称:字符串,速率:双精度)

但是,“名称”变量是Employee类的私有属性,每小时与该类通过继承相关联。 我的意思是说,UML从Hourly类指向Employee类显示一条清晰的箭头(不是菱形)。

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

我有以下基本知识:

public Hourly(String name, double rate){


}

请帮我填写。

单独说,方法有一个返回。 假设我想退还double rate 返回使用Super()的某些语法的正确语法是什么,我知道我不能简单地使用:

return this.rate;

您的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;
}

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

public class Hourly {

  private double rate;

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

  public double getRate() {
    return rate;
  }
}

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

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

由于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
    }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM