以下是此作業的5個類別之一的選定代碼。覆蓋equals()方法以允許異源對象
每個類都必須有一個equals()方法,該方法可以將其類的對象與任何以及所有5個類的對象進行比較。
我的策略是爲了精確性而將每個對象值轉換爲double值。
隨着每個類的擴展Number每個類都有一個doubleValue()方法來使用。
代碼將不會編譯除非我執行之前的doubleValue類型強制轉換x至RationalN()
但在執行時另一個類的對象進行比較,因爲它不能被類型強制轉換到類它抱怨的代碼時。
我該從哪裏出發?
public class RationalN extends Number{
private int numerator;
private int denominator;
public RationalN(int x, int y){
if (y == 0){
throw new ArithmeticException("cannot devide by zero");
} else {
this.numerator=x;
this.denominator=y;
}
}
public double doubleValue(){
double value = (double)numerator/(double)denominator;
return (double)value;
}
public boolean equals(Object x){
if (((RationalN)x).doubleValue() == this.doubleValue()){
return true;
} else {
return false;
}
}
準備接受哪些類作爲equals()函數的有效參數? –
你想確保'x'與'this'具有相同的類。如果'x'不是null並且'x.getClass()== this.getClass()'那麼它們是同一個類。如果你的類是'final','instanceof'也可以。 –
其他類還擴展了'java.lang.Number'嗎?那麼超類「Number」需要實現的其他抽象方法呢? – Gevorg