簡體   English   中英

對 super 的調用必須是構造函數中的第一條語句,但它是

[英]Call to super must be first statement in the constructor, but it is

我一直收到一條錯誤消息,說“對 super 的調用必須是構造函數中的第一條語句”。

問題是它我的構造函數中的第一條語句。

public void CheckingAccountCustomer(int a){
    super(n, p, b);
    accountNo = a;
}

這也是我的超類。

public void customer(String n, int p, double b){
    name = n;
    pin = p;
    balance = b;
}

我在這里做錯了什么?

這段代碼

public void customer(String n, int p, double b){

不是構造函數。 構造函數沒有返回類型,例如void 假設您的班級名稱是customer

public customer(String n, int p, double b){

這也適用於CheckingAccountCustomer

public void CheckingAccountCustomer(int a){

這不是構造函數,因為它聲明它具有void返回類型。 它只是一個與類同名的方法。 擺脫返回類型。

public CheckingAccountCustomer(int a){
public void CheckingAccountCustomer(int a)

這是一種方法而不是構造函數,因為它具有返回類型。

構造函數用於創建該類實例 ,因此它是否允許用戶更改返回類型是沒有意義的(它也可能是危險的)。 這就是構造函數沒有返回類型的原因。

正如其他人已經回答的那樣,刪除返回類型,它將成為構造函數。

構造函數永遠不會返回某些內容(void或Object類型)。

public void CheckingAccountCustomer(int a){
    super(n, p, b);
    accountNo = a;
}

因此不是構造函數。

確保你的“構造函數”真的是一個構造函數。

Java 中有大量的廢話樣板,我很奇怪為什么構造函數沒有“構造函數”關鍵字。 我的意思是,Java 沒有過度冗長的問題,但喜歡在冗長是個好主意的地方保持簡潔。

//:錯誤的://

@Service
public class      EmployeeServiceImpl 
       implements EmployeeServiceInterface
{

    private EmployeeRepository employeeRepository ;

    /** Constructor **/

    public EmployeeServiceImpl saveEmployee(
        EmployeeRepository employeeRepository
    ){
        super(); //:No blank line allowed? ://
        this.employeeRepository = employeeRepository ;

    }

}

//:固定的://

@Service
public class      EmployeeServiceImpl 
       implements EmployeeServiceInterface
{

    private EmployeeRepository employeeRepository ;

    /** Constructor **/

    public EmployeeServiceImpl(
        EmployeeRepository employeeRepository
    ){
        super(); //:No blank line allowed? ://
        this.employeeRepository = employeeRepository ;

    }
}

因為 java 允許重載,所以它沒有發現這個錯誤。 因為就在我的構造函數下面是這樣的:

@Override
public EmployeeDAO saveEmployee( EmployeeDAO employee ){

        return employeeRepository.save( employee ) ;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM