构造函数给出了2个错误

时间:2016-11-30 07:57:52

标签: java

package vehicleapp;

public class Car extends Vehicle {
    int seatCap;

    public Car(String name, int modelNo, int seatCap) {
        this.seatCap = seatCap;
        super(name, modelNo);
    }
}

此代码中的问题是什么?

5 个答案:

答案 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();在所有用户定义的构造函数中,但很明显它没有写入。