[英]Java error creating subclass constructor
我試圖學習一些Java,卻一直無法創建子類。 我不斷收到錯誤消息。 There is no default constructor available in...
。
這是代碼:
class Car
{
String name;
int speed;
int gear;
int drivetrain;
String direction;
String color;
String fuel;
public Car(String carName, int carSpeed, String carDirection, String carColor, int carDriveTrain, int carGear)
{
name = carName;
speed = carSpeed;
gear = carGear;
drivetrain = carDriveTrain;
direction = carDirection;
color = carColor;
fuel = "Gas";
}
void shiftGears(int newGear){gear = newGear; }
void accelerateSpeed(int acceleration){speed = speed + acceleration; }
void applyBrake(int brakingFactor){ speed = speed - brakingFactor;}
void turnWheel(String newDirection){ direction = newDirection; }
}//end of Car class
class Suv extends Car
{
void applyBrake(int brakingFactor)
{
super.applyBrake(brakingFactor);
speed = speed - brakingFactor;
}
}
當我嘗試創建“ Suv”子類時,問題就來了。 我究竟做錯了什么? 謝謝!
由於“ Car”具有構造函數,因此從Car派生的任何子類也需要構造函數。 因此,首先您需要在Suv類中放置一個構造函數。
例:
class Suv extends Car {
public Suv() {
super( /* here you need to pass arguments to create a car */);
// any other constructor code
}
}
你可能想創建下面的構造Suv
那initialzies該參數的Car
構造函數:
public Suv(String carName, int carSpeed, String carDirection, String carColor, int carDriveTrain, int carGear)
{
super (carName, carSpeed, carDirection, carColor, carDriveTrain,carGear);
}
另一種方法是向Car
添加無參數構造函數,在這種情況下, Sub
的默認構造函數將調用該構造函數:
public Car()
{
}
將以下構造函數添加到Car
:
public Car(){}
問題是, Suv
不能因為為了運行創建Suv
的默認構造函數的構造函數Car
需要先跑去, Car
只接受參數,以便它不能被用來作為默認的構造函數的構造函數。
另一種方法是,作為@Markus建議,以實現在構造函數Suv
即會打電話給super
了所有必需的參數。 無論哪種方式,主要思想是為了實例化Suv
我們需要首先能夠實例化Car
否則我們將得到編譯器錯誤。
我建議不要將SUV類放在同一文件中。 相反,請在當前程序包中創建另一個類,將其命名為SUV,對其進行擴展,並通過以下兩種語法之一調用超類構造函數:
super(); //calls the superclass no-argument constructor with no parameter list
要么
super(parameter list); //calls the superclass constructor with a matching parameter list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.