A:使Vehicle为抽象类,并向其添加以下抽象方法:
浮动运行成本(int hours_of_operation);它接收运行小时数作为参数,并返回车辆的运行成本。 Car和Airplane类将按以下方式实现此方法:
对于Car类,定义一个名为cost_per_cylinder_per_hour的私有浮点型实例变量,并将其初始化为您选择的值。汽车的runningCost等于:运营小时x成本每缸每小时x缸数
对于Airplane类,定义一个名为cost_per_engines_per_hour的私有float实例变量,并将其初始化为您选择的值。一架飞机的运行成本等于:运营小时x成本引擎每引擎小时x引擎数量
B:编写一个称为maintainable的接口,该接口具有以下方法:
float maintenanceCost(float cost_Per_Unit);它接收发动机或气缸的单位成本作为参数,并返回维护成本。 Car和Airplane类将实现此接口,如下所示:
对于汽车类,汽车的维护成本将等于:cost_Per_Unit x缸数
对于飞机类,飞机的维护成本将等于:cost_Per_Unit x发动机数量
C:向Vehicle类添加String toString()方法。打印车辆时,将显示其名称和max_speed。另外,向Car和Airplane类中添加String toString()方法。 Car和Airplane类的String toString()方法将显示以下内容:
打印汽车时,将显示其名称,max_speed,缸数和cost_per_cylinder_per_hour。
打印飞机时,将显示其名称,max_speed,发动机数量和cost_per_engines_per_hour。
代码:
public abstract class Vehicle
{
private String name;
private double max_speed;
public Vehicle(String n, double top_speed)
{
name = n;
max_speed = top_speed;
}
public void setName(String n)
{
name = n;
}
public void setMaxSpeed(double top_speed)
{
max_speed = top_speed;
}
public String getName()
{
return name;
}
public double getMaxSpeed()
{
return max_speed;
}
public String toString()
{
String info = "Vehicle name: " + name + "\ntop speed: " + max_speed;
return info;
}
public abstract float runningCost(int hours_of_operation);
}
-------------------------------------------------------------
public class Airplane extends Vehicle implements Maintainable
{
private int number_of_engines;
private float cost_per_engines_per_hour;
public Airplane(String n, double top_speed, int engines)
{
super(n, top_speed);
number_of_engines = engines;
}
public void setEngineNumber(int engines)
{
number_of_engines = engines;
}
@Override
public float runningCost(int hours_of_operation)
{
float runningCost;
cost_per_engines_per_hour = 39.0f;
runningCost = hours_of_operation * cost_per_engines_per_hour * number_of_engines;
return runningCost;
}
public int getEngineNumber()
{
return number_of_engines;
}
public String toString()
{
String planeInfo = super.toString() + ", number of engines: " + number_of_engines;
return planeInfo;
}
}
---------------------------------------------------------
public class Car extends Vehicle implements Maintainable
{
private int number_of_cylinders;
private float cost_per_cylinder_per_hour;
public Car(String n, double top_speed, int cylinders)
{
super(n, top_speed);
number_of_cylinders = cylinders;
}
public void setCylinderNumber(int cylinders)
{
number_of_cylinders = cylinders;
}
@Override
public float runningCost(int hours_of_operation)
{
cost_per_cylinder_per_hour = 13.0f;
float runningCost;
runningCost = hours_of_operation * cost_per_cylinder_per_hour * number_of_cylinders;
return runningCost;
}
public int getCylinderNumber()
{
return number_of_cylinders;
}
public String toString()
{
String carInfo = super.toString() + "\nnumber of cylinders: " + number_of_cylinders + "\nMaintenance cost: ";
return carInfo;
}
}
--------------------------------------------------------------
public interface Maintainable
{
float maintenanceCost(float cost_Per_Unit);
}
--------------------------------------------------------------
//errors:
Airplane.java:1: error: Airplane is not abstract and does not override abstract method maintenanceCost(float) in Maintainable
public class Airplane extends Vehicle implements Maintainable
Car.java:1: error: Car is not abstract and does not override abstract method maintenanceCost(float) in Maintainable
public class Car extends Vehicle implements Maintainable
您从未实际实现Maintainable
接口。当您声明一个类实现一个接口时,基本上就是“有希望”实现该接口指定的所有方法。