Super()首先要做的事情

时间:2011-09-20 17:16:07

标签: java super

所以我有这段代码。

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

时,有人可以告诉我,你的意思是什么

它只适用于构造函数吗?

3 个答案:

答案 0 :(得分:5)

首次调用super()的强制执行仅适用于构造函数。即使它被省略,在编译期间也会插入对默认super()构造函数的调用。

答案 1 :(得分:1)

在构造函数中,您可以选择仅在构造函数的第一行调用带有super的超类构造函数。如果不这样做,则会隐式调用默认的超类构造函数。

在其他地方,您可以在方法,初始化程序或构造函数中的任何位置使用super来访问超类成员。

答案 2 :(得分:0)

它将使用传递给HourlyWorker构造函数的参数初始化超类(Worker类)。

需要在构造函数的开头调用它。 Super可以在其他任何地方使用。