继承构造函数中的super()第一个语句

时间:2015-04-05 02:23:40

标签: java inheritance super

以下代码显示错误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;
    }
}

这不是第一次声明吗?

2 个答案:

答案 0 :(得分:2)

没有。您的类的构造函数必须命名为“Car”。你有一个方法“car”(小写),所以super不是构造函数的第一个语句。

答案 1 :(得分:1)

  

这不是第一次声明吗?

但是消息说:

  

“构造函数调用必须是构造函数中的第一个语句。”

...而public void car(...)不是Car的构造函数。相反,它是一个名为car的方法,它被声明为什么都不返回。

课程:

  1. 构造函数的名称必须与类的名称相同。

  2. 构造函数永远不会有声明的返回类型(或void)。

  3. 如果您忽略Java的标识符样式规则,您很可能会自己开枪。类名应始终以大写字母开头。