2011-09-20 43 views
2

所以我有這個代碼。超級()第一件事要做

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

它只是爲構造函數?

回答

5

第一次調用super()的強制執行僅適用於構造函數。即使它被忽略,在編譯過程中也會插入對默認構造函數super()的調用。

1

在構造函數中,您可以選擇僅在構造函數的第一行調用超類構造函數super。如果你不這樣做,默認的超類構造函數將被隱式調用。

在其他地方,您可以在方法,初始值設定項或構造函數中的任何位置使用super來訪問超類成員。

0

它只會用傳遞給HourlyWorker構造函數的參數初始化超類(Worker類)。

它需要在構造函數的開頭調用。超級可以在其他地方的任何線路上使用。

相關問題