构造函数给出2个错误

构造函数给出2个错误

问题描述:

package vehicleapp; 

public class Car extends Vehicle { 
    int seatCap; 

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

这段代码有什么问题?请告诉我!构造函数给出2个错误

+0

如果问题解决了,请给出一个答案。 – nullpointer

super(name, modelNo);必须在构造函数体的第一条语句(只要您有它明确),因为超类构造函数必须先于子类构造函数体执行:

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

在任何构造函数调用,超级必须是正在使用的第一行。 docs.oracle.com/javase/tutorial/java/IandI/super.html

super(name, modelNo); 

使用super()为您的构造函数中的第一行的理由,在SO-答案在这里共享 - 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; 
} 

在你Vehicleapp

您的车辆类必须是这样的

public class Vehicle{ 
private String name,modelNo; 
    Vehicle(String name ,String modelNo) 
    { 
      this.name=name; 
      this.modelNo=modelNo; 
    } 
} 

Super();关键字应该在顶层,因为您在子类中创建构造函数,构造函数首先查找superClass构造函数,直到Object SuperClass。

Hirearchy:

孩子Contrctor->(查找父类的构造) - >父类 - >(如果它也继承任何超它应该有父类的父类的构造,即超();) - > .. 。 - > Object SuperClass。

通常我们有关键字super();在所有用户定义的构造函数中,但显而易见的是它没有写成。