Java 抽象类中缺少Return语句,不需要参数

Java 抽象类中缺少Return语句,不需要参数,java,Java,我们被分配了一个任务,有两个(完整的)类摩托车和汽车,其中要求创建一个抽象类车辆,该类还应包含一个抽象方法(我猜用于计算车辆税)和一个名为CarIF的接口,用于所有公共方法(我不知道那是什么意思) 我已经创建了以下代码,并编辑了摩托车和汽车,这样它们就不会包含颜色和气缸容量,并创建了一个测试文件以查看它是否工作,但当我试图编译它时,我得到的错误是 missing return statement 在my车辆类中 另外,每当我在Test.java中尝试向Motorcycle添加任何内容时,我都会

我们被分配了一个任务,有两个(完整的)类
摩托车
汽车
,其中要求创建一个抽象类
车辆
,该类还应包含一个抽象方法(我猜用于计算车辆税)和一个名为
CarIF
的接口,用于所有公共方法(我不知道那是什么意思)

我已经创建了以下代码,并编辑了
摩托车
汽车
,这样它们就不会包含颜色和
气缸容量
,并创建了一个测试文件以查看它是否工作,但当我试图编译它时,我得到的错误是

missing return statement
在my
车辆
类中

另外,每当我在
Test.java
中尝试向
Motorcycle
添加任何内容时,我都会得到一个错误,即没有预期的参数。这是因为我缺少一个构造函数,这是否意味着我也需要向
Car
中的构造函数添加颜色和
气缸容量

(我把它们放在不同的文件中,但我把它们放在一起,作为代码发布在这里。)

公共抽象类车辆
{
私有字符串颜色;
私人双缸容量;
公共双GetCylinder容量(){
回油缸容量;
}
public double-setCylinderCapacity(double-cylinderCapacity){//不要更改原始问题,否则任何查看此问题的人都可能会感到困惑。
此。气缸容量=气缸容量;
}
公共字符串getColor(){
返回颜色;
}
公共void setColor(字符串颜色){
这个颜色=颜色;
}
公共摘要双计算车辆AX();
}
公共接口CarIF{
void printInfo();
}
公共级摩托车扩展车辆工具CarIF{
@凌驾
公共双计算器车辆税(){
返回数学单元(气缸容量/25)*1.84;
}
public void printInfo(){
System.out.println(“我是一个”+this.getClass().getSimpleName()+”;
}
}
公共级轿车扩展了车辆实现CarIF{
私有int引擎类型;
私人双二氧化碳排放;
公共汽车(内部发动机类型,双二氧化碳排放){
this.engineType=engineType;
这个.二氧化碳排放量=二氧化碳排放量;
}
public int getEngineType(){
返回引擎类型;
}
公共双getCo2Emission(){
返回二氧化碳排放;
}
@凌驾
公共双计算器车辆税(){
双重税=(engineType==0)?2.0:9.5;
双二氧化碳排放量=二氧化碳排放量-95;
如果(_CO2排放量<0){
_二氧化碳排放量=0;
}
返回数学单元(气缸容量/100)*税+二氧化碳排放*2.0;
}
public void printInfo(){
System.out.println(“我是一个”+this.getClass().getSimpleName()+”;
}
}
公开课考试{
公共税收(车辆o){
系统输出打印(“税:”);
System.out.println(o.calculateMotorVehicleTax());
}
公共静态void main(字符串[]args){
c车=新车(“蓝色”,红色,3,5);
摩托车m=新摩托车(“红色”,9,);
印花税(c);
印花税(m);
}
}

如果方法的返回类型为other then
void
,则方法中应该有
return
语句,该语句将无条件调用

这里有一个
public double setCylinderCapacity(…){}
方法,该方法的retunr类型为
double
,而您不返回任何
double
值。因此会出现
缺少返回语句的情况


返回方法名称不建议的
double
,或者将返回类型更改为
void

您应该向车辆类、摩托车类添加构造函数,并更改车辆类中的构造函数。您的车辆构造函数应该如下所示

public Vehicle(String color, Double cylinderCapacity){
this.color = color;
this.cylinderCapacity = cylinderCapacity;
}
您的摩托车制造商应如下所示:

public MotorCycle(String color, double cyclinderCapacity){
super(color, cylinderCapacity)//this calls the vehicle constructor
}
你的汽车构造函数与测试中的参数不匹配。如果你想在汽车构造函数中添加颜色和CylinderCapacity,只需在参数中添加颜色和CylinderCapacity,然后在构造函数体中调用超级构造函数,就像我在摩托车构造函数中所做的那样

另外,您的
double-setCylinderCapacity(double-cylinderCapacity)
方法缺少返回类型。我假设该方法仅用于设置值,所以只需将double更改为void eg

void setCylinderCapacity(double cylinderCapacity)

希望这对你的
public-double-setCylinderCapacity(…)
应该是
public-void-setCylinderCapacity(…)
。@luk2302是怎么说的。另外,你没有为你的Motorcycle类定义构造函数,所以你不能传递(String,int)作为测试类中的参数。您的构造函数参数不匹配。请以后不要这样做。@NikRawlins。在问题得到回答后,请尽量避免更改问题。否则,将来看这个问题的任何人都看不到问题所在。Sry没有想到这一点!我已经尝试将构造函数添加到Car中,不是吗或者骑自行车和车,但那也没用。我的笔记本电脑坏了,所以我无法尝试,但是如果我删除了所有的构造函数,会发生什么呢?我看了老师提供的类似场景的例子,没有一个有构造函数。
void setCylinderCapacity(double cylinderCapacity)