package vehicleapp;
public class Car extends Vehicle {
int seatCap;
public Car(String name, int modelNo, int seatCap) {
this.seatCap = seatCap;
super(name, modelNo);
}
}
此代码中的问题是什么?
答案 0 :(得分:3)
super(name, modelNo);
必须是构造函数体中的第一个语句(无论何时显式包含它),因为超类构造函数必须在子类构造函数的主体之前执行:
public Car(String name, int modelNo, int seatCap) {
super(name, modelNo);
this.seatCap = seatCap;
}
答案 1 :(得分:1)
在任何构造函数调用中, super 必须是第一行,如果正在使用它。 docs.oracle.com/javase/tutorial/java/IandI/super.html
super(name, modelNo);
答案 2 :(得分:0)
使用super()
作为构造函数中的第一行,原因是在此处的SO-answer中共享 - why-does-this-and-super-have-to-be-the-first-statement-in-a-constructor,您可以将现有代码更改为 -
public Car(String name, int modelNo, int seatCap) {
super(name, modelNo);
this.seatCap = seatCap;
}
答案 3 :(得分:0)
在 Vehicleapp 包
中您的车辆类必须是这样的
public override void RenderControl
答案 4 :(得分:0)
超级();当你在子类中创建构造函数时,关键字应该在顶部,构造函数首先查找superClass构造函数,直到Object SuperClass。
Hirearchy:
child Contrctor-> (查找父构造函数) - > ParentClass - >(如果它也继承任何superClass它应该有超类的superClass构造函数,即Super();) - > ... - > Object SuperClass。
通常我们有关键字super();在所有用户定义的构造函数中,但很明显它没有写入。