所以我有这段代码。
public class HourlyWorker extends Worker {
private int hours;
public HourlyWorker(String name, int salRate,int hours) {
super(name, salRate);
this.hours=hours;
}
@Override
void computePay() {
int pay;
if(hours<60)
{
System.out.println("haha");
pay=super.getSalRate()*hours; //CALLING SUPER HERE.
System.out.println("pay of"+super.getName()+"="+pay);
}
}
}
现在在Worker
类中,我有这个方法getSalRate。
我被告知super
应该是方法中的第一行代码。但是,如果我在这里(在给出的表达式)中调用它;它运作得很好。
当有人说"Make Sure That Super Is The First Line Of Code
它只适用于构造函数吗?
答案 0 :(得分:5)
首次调用super()
的强制执行仅适用于构造函数。即使它被省略,在编译期间也会插入对默认super()
构造函数的调用。
答案 1 :(得分:1)
在构造函数中,您可以选择仅在构造函数的第一行调用带有super
的超类构造函数。如果不这样做,则会隐式调用默认的超类构造函数。
在其他地方,您可以在方法,初始化程序或构造函数中的任何位置使用super
来访问超类成员。
答案 2 :(得分:0)
它将使用传递给HourlyWorker构造函数的参数初始化超类(Worker类)。
需要在构造函数的开头调用它。 Super可以在其他任何地方使用。