我正在做一个关于实现接口的家庭作业,并且有点迷失。我需要实现类似的接口并使用compareTo()方法。这是我的超级类的代码,它有三个子类,它们都是不同形式的车辆。在这种情况下,我正试图占据他们拥有的门的数量。
以下是“Vehicle”超类
的代码package vehicle;
abstract public class Vehicle implements Comparable {
private String color;
private int numberOfDoors;
// Constructor
/**
* Creates a vehicle with a color and number of doors
* @param aColor The color of the vehicle
* @param aNumberOfDoors The number of doors
*/
public Vehicle(String aColor, int aNumberOfDoors) {
this.color = aColor;
this.numberOfDoors = aNumberOfDoors;
}
// Getters
/**
* Gets the color of the vehicle
* @return The color of the vehicle
*/
public String getColor() {return(this.color);}
/**
* Gets the number of doors the vehicle has
* @return The number of doors the vehicle has
*/
public int getNumberOfDoors() {return(this.numberOfDoors);}
// Setters
/**
* Sets the color of the vehicle
* @param colorSet The color of the vehicle
*/
public void setColor(String colorSet) {this.color = colorSet;}
/**
* Sets the number of doors for the vehicle
* @param numberOfDoorsSet The number of doors to be set to the vehicle
*/
public void setNumberOfDoors(int numberOfDoorsSet) {this.numberOfDoors = numberOfDoorsSet;}
public int compareTo(Object o) {
if (o instanceof Vehicle) {
Vehicle v = (Vehicle)o;
}
else {
return 0;
}
}
/**
* Returns a short string describing the vehicle
* @return a description of the vehicle
*/
@Override
public String toString() {
String answer = "The car's color is "+this.color
+". The number of doors is"+this.numberOfDoors;
return answer;
}
}
目前这是一项正在进行的工作,我不确定在compareTo方法上从何处开始。非常感谢任何帮助。
谢谢!
修改的 一旦我在超类中使用了compareTo()方法,我是否需要添加到子类中以实现此功能?
谢谢!
答案 0 :(得分:4)
您应该拥有车辆工具Comparable<Vehicle>
,因此您的compareTo
方法可以采用Vehicle
参数,而不必进行投射。
但是如果你问如何实施compareTo
方法,那么如果该车辆应该小于其他车辆,则返回负数;如果它应该更大,则返回一个正数,如果它们应该相等,则返回0
。您可能会使用color.compareTo(otherVehicle.color)
来比较颜色,因为它们是String
s。
这应该是足够的提示!
答案 1 :(得分:2)
如果比较仅基于门号,请尝试以下操作:
public int compareTo(Object o) {
if (o instanceof Vehicle) {
Vehicle v = (Vehicle) o;
return getNumberofDoors() - v.getNumberOfDoors();
} else {
return 0;
}
}
答案 2 :(得分:1)
compareTo()
应返回表示当前对象与给定对象(参数)的比较方式的int
。换句话说,如果您当前的对象“小于”传递的对象,那么它应该返回一个负数。
答案 3 :(得分:1)
首先让你的车辆工具Comparable<Vehicle>
如路易斯所说。然后在你的compareTo方法中,你想要返回一个值,比较你希望它们被比较的车辆的方面。
public int compareTo(Vehicle v) {
return this.getNumberOfDoors() - v.getNumberOfDoors();
}
如果门的数量相同,则返回零。如果v有更多门,则为负值;如果v有更少门,则为正值。
您还可以比较其他内容(例如,如果您添加该内容,就像制作汽车一样)
public int compareTo(Vehicle v) {
return this.make.compareTo(v.make);
}