以下代码显示错误Constructor call must be the first statement in a constructor
public class Vehicle {
private String type;
private int age;
private String model;
private float price;
public void vehicle(String type, int age, String model, float price){
this.type = type;
this.age = age;
this.model = model;
this.price = price;
}
}
Car class扩展了Vehicle;
public class Car extends Vehicle {
private int numberOfDoors;
public void car(String type, int age, String model, float price, int numberOfDoors){
super(type, age, model, price); //Error:Constructor call must be the first statement in a constructor
this.numberOfDoors = numberOfDoors;
}
}
这不是第一次声明吗?
答案 0 :(得分:2)
没有。您的类的构造函数必须命名为“Car”。你有一个方法“car”(小写),所以super
不是构造函数的第一个语句。
答案 1 :(得分:1)
这不是第一次声明吗?
是
但是消息说:
“构造函数调用必须是构造函数中的第一个语句。”
...而public void car(...)
不是Car
的构造函数。相反,它是一个名为car
的方法,它被声明为什么都不返回。
课程:
构造函数的名称必须与类的名称相同。
构造函数永远不会有声明的返回类型(或void
)。
如果您忽略Java的标识符样式规则,您很可能会自己开枪。类名应始终以大写字母开头。