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 thenvoid
,则方法中应该有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)