![](/img/trans.png)
[英]Constructor call must be the first statement in a constructor in 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.