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