嗨,我正在尝试编译子类Car.java,以扩展抽象类Vehicle.java并实现Comparable接口(interface)。
尝试编译Car.java类时出现以下错误:
汽车不是抽象的,并且不会覆盖Abstract方法。
找不到标志
和
缺少方法主体,或声明摘要
我需要什么来纠正它?
Car.java类扩展了Abstact类的载具,并实现了Comparable接口(interface)
即:
公共(public)舱汽车扩展车辆工具可比
我必须编写2个类Car.java和Bus.java。他们既扩展了车辆又实现了可比性。
对于我来说,运行程序selectionSort.java和SortVehicle.java程序需要一切。
这些错误使我无法完成Car.java类,因为我无法越过它们而无法编写Bus.java类,然后运行SortSelection.java和SortVehicle.java程序。
Vehicle.java,SelectionSort.java和SortVehicle.java已提供给我,没有任何错误或问题。
对于纠正这些错误的任何帮助,我将不胜感激。
我的Car.java代码是:
public class Car extends Vehicle implements Comparable
{
public static final int MAX_ENGINE_CAPACITY = 2000;
public static final int MIN_ENGINE_CAPACITY = 1800;
public static final int MAX_NUMBER_OF_SEATS = 7;
public static final int MIN_NUMBER_OF_SEATS = 7;
private String vehicleColour;
private int numberOfSeats;
private int engineCapacity;
public Car (Car otherCar)
{
super();
this.vehicleColour = otherCar.vehicleColour;
this.numberOfSeats = otherCar.numberOfSeats;
this.engineCapacity = otherCar.engineCapacity;
}
/public Car()
{
super();
this.vehicleColour = new vehicleColour();
this.numberOfSeats = MIN_NUMBER_OF_SEATS;
this.engineCapacity = MIN_ENGINE_CAPACITY;
}
public Car (String aModel, int aYearOfManufacture, String aVehicleColour, int aNumberOfSeats, int aEngineCapacity)
{
super(aModel, aYearOfManufacture);
this.vehicleColour = otherCar.vehicleColour;
this.numberOfSeats = otherCar.numberOfSeats;
this.engineCapacity = otherCar.engineCapacity;
}
public String getVehicleColour()
{
return this.vehicleColour;
}
public int getNumberOfSeats()
{
return this.numberOfSeats;
}
public int getEngineCapacity()
{
return this.engineCapacity;
}
public void setVehicleColour (String newVehicleColour);
{
if (newVehicleColour == null)
{
System.out.println("Fatal Error setting vehicle colour.");
System.exit(0);
}
else
this.vehiclColour = newVehicleColour;
}
public void setNumberOfSeats (int newNumberOfSeats)
{
if (newNumberOfSeats == null)
{
System.out.println("Fatal Error setting number Of Seats.");
System.exit(0);
}
else
this.numberOfSeats = newNumberOfSeats;
}
public void setEngineCapacity (int newEngineCapacity);
{
if (newEngineCapacity == null)
{
System.out.println("Fatal Error setting number Of Seats.");
System.exit(0);
}
else
this.engineCapacity = newEngineCapacity;
}
}
Vehicle.java代码为:
public abstract class Vehicle
{
public static final int MAX_REASONABLE_YEAR_OF_MANUFACTURE = 2100;
public static final int MIN_REASONABLE_YEAR_OF_MANUFACTURE = 1000;
private String model;
private int yearOfManufacture;
public Vehicle ()
{
this.model = "(model unspecified)";
this.yearOfManufacture = MIN_REASONABLE_YEAR_OF_MANUFACTURE;
}
public Vehicle (String aModel, int aYearOfManufacture)
{
this.model = aModel;
if (yearOfManufactureReasonable(aYearOfManufacture))
this.yearOfManufacture = aYearOfManufacture;
else
{
System.out.println("Fatal Error: unreasonable year of manufacture used defining vehicle.");
System.exit(0);
}
}
public Vehicle (Vehicle otherVehicle)
{
this.model = otherVehicle.model;
this.yearOfManufacture = otherVehicle.yearOfManufacture;
}
private static boolean yearOfManufactureReasonable(int aYearOfManufacture)
{
return (aYearOfManufacture >= MIN_REASONABLE_YEAR_OF_MANUFACTURE
&& aYearOfManufacture <= MAX_REASONABLE_YEAR_OF_MANUFACTURE);
}
public String getModel ()
{
return this.model;
}
public int getYearOfManufacture ()
{
return this.yearOfManufacture;
}
public void setModel (String aModel)
{
this.model = aModel;
}
public void setYearOfManufacture (int aYearOfManufacture)
{
if (yearOfManufactureReasonable(aYearOfManufacture))
this.yearOfManufacture = aYearOfManufacture;
}
public String toString ()
{
return (this.model + ", " + this.yearOfManufacture);
}
public boolean equals (Object otherObject)
{
if (otherObject == null)
return false;
if (getClass() != otherObject.getClass())
return false;
Vehicle otherVehicle = (Vehicle)otherObject;
return (this.model.equals(otherVehicle.model)
&& this.yearOfManufacture == otherVehicle.yearOfManufacture);
}
public abstract int getPassengerCapacity ();
public boolean greaterPassengerCapacityThan (Vehicle otherVehicle)
{
return (this.getPassengerCapacity() > otherVehicle.getPassengerCapacity());
}
}
我得到的错误的完整列表如下:
Car.java:5: error: Car is not abstract and does not override abstract method get
PassengerCapacity() in Vehicle
public class Car extends Vehicle implements Comparable
^
Car.java:27: error: cannot find symbol
this.vehicleColour = new vehicleColour();
^
symbol: class vehicleColour
location: class Car
Car.java:35: error: cannot find symbol
this.vehicleColour = otherCar.vehicleColour;
^
symbol: variable otherCar
location: class Car
Car.java:36: error: cannot find symbol
this.numberOfSeats = otherCar.numberOfSeats;
^
symbol: variable otherCar
location: class Car
Car.java:37: error: cannot find symbol
this.engineCapacity = otherCar.engineCapacity;
^
symbol: variable otherCar
location: class Car
Car.java:56: error: missing method body, or declare abstract
public void setVehicleColour (String newVehicleColour);
^
Car.java:58: error: cannot find symbol
if (newVehicleColour == null)
^
symbol: variable newVehicleColour
location: class Car
Car.java:64: error: cannot find symbol
this.vehiclColour = newVehicleColour;
^
symbol: variable vehiclColour
Car.java:64: error: cannot find symbol
this.vehiclColour = newVehicleColour;
^
symbol: variable newVehicleColour
location: class Car
Car.java:69: error: incomparable types: int and <null>
if (newNumberOfSeats == null)
^
Car.java:78: error: missing method body, or declare abstract
public void setEngineCapacity (int newEngineCapacity);
^
Car.java:80: error: cannot find symbol
if (newEngineCapacity == null)
^
symbol: variable newEngineCapacity
location: class Car
Car.java:86: error: cannot find symbol
this.engineCapacity = newEngineCapacity;
^
symbol: variable newEngineCapacity
location: class Car
13 errors
最佳答案
您必须在getPassengerCapacity()
类中实现Car
方法,或者将Car
类标记为abstract
。如果不实现主体,则不能扩展抽象类并留下方法。如果您不想实现该方法,则也需要将该类标记为abstract
。