Implicit super constructor Controller() is undefined. Must explicitly invoke another constructor
时间: 2024-06-04 20:09:11 浏览: 135
这个错误通常发生在你尝试创建一个类的子类,而父类中没有无参数的构造函数。在Java中,如果你没有显式地定义构造函数,那么编译器会自动生成一个无参数的构造函数。但是,如果你在父类中定义了一个构造函数,并且没有定义一个无参数的构造函数,那么编译器将不会自动生成一个无参数的构造函数。这时候,如果你想创建一个子类对象,就必须在子类的构造函数中通过 super() 显式地调用父类的构造函数。
因此,要解决这个错误,你需要在子类的构造函数中调用父类的构造函数。如果父类中有一个带参数的构造函数,你需要在子类的构造函数中调用 super(param1, param2, ...) 来传递参数给父类的构造函数。如果你想在子类中定义一个无参数的构造函数,你需要在父类中定义一个无参数的构造函数,或者在子类的构造函数中通过 super() 调用父类的其他构造函数来避免这个错误。
相关问题
Implicit super constructor BankAccount() is undefined. Must explicitly invoke another constructor
这个错误通常出现在你的类继承了另一个类,而在子类的构造函数中没有显式地调用父类的构造函数。你需要在子类的构造函数中使用 `super()` 调用父类的构造函数,或者使用 `super(args)` 调用父类的带参构造函数(如果有的话)。
例如,如果你的子类是 `SavingsAccount`,它继承自父类 `BankAccount`,你的代码可能是这样的:
```
public class SavingsAccount extends BankAccount {
public SavingsAccount() {
// 缺少调用父类构造函数的代码
}
}
```
你需要使用 `super()` 调用父类的无参构造函数,或者使用 `super(args)` 调用父类的带参构造函数(如果有的话),例如:
```
public class SavingsAccount extends BankAccount {
public SavingsAccount(double balance) {
super(balance); // 调用父类的带参构造函数
}
}
```
在这个例子中,我们使用 `super(balance)` 调用了父类的带参构造函数,而不是使用 `super()` 调用父类的无参构造函数。这样就可以解决这个错误了。
Implicit super constructor Props() is undefined. Must explicitly invoke another constructor
这个错误通常发生在子类继承父类时,子类没有调用合适的父类构造函数。在Java中,如果一个类没有显式地调用父类的构造函数,Java编译器会默认调用父类没有参数的构造函数。但是,如果父类没有没有参数的构造函数,那么子类必须显式地调用父类构造函数。
解决这个错误的方法是在子类的构造函数中添加一个super()调用,以调用父类的构造函数。如果父类有参数的构造函数,则需要在super()中传递相应的参数。
例如:
```
public class Parent {
public Parent(String name) {
// constructor code
}
}
public class Child extends Parent {
public Child(String name) {
super(name); // call parent constructor with name parameter
// constructor code
}
}
```
在这个例子中,子类Child显式地调用了父类构造函数,并传递了相应的参数。这样就避免了这个错误。
阅读全文