/*
描述圖書:book??
????作者,書名,價格。
????行為:6個set?get
????建立book比較相同的依據。只要書名相同就視為同一本書。??字符串判斷相同:請查api文檔。equals方法,String類重寫Object類中的equals
????建立book對象的字符串表現形式。?Book[作者:+??書名?+??價格]
????*/
class?Book?extends?Object{
//屬性
private?String?author;
private?String?name;
private?double?price;
//六個方法
void??setAuthor(String?author){
????this.author=author;
}
String??getAuthor(){
????return?this.author;
}
void??setName(String?name){
????this.name?=name;
}
String??getName(){
????return?this.name;
}
void??setPrice(double?price){
????this.price=price?;
}
double?getPrice(){
????return?this.price;
}
//重寫equals方法.
public?boolean?equals(Object?obj){//object類型的參數?
//如果調用該方法的對象和傳入該方法的對象是同一個則返回true;
if?(this==obj)
????return?true;
//比較子類中的方法,應向下轉型
if?(!(obj?instanceof?Book))
????return?false;
throw?new?ClassCastException("數據類型錯誤,請改正");
Book?book=(Book)obj;
return?this.name==book.name;
}
}
class?objectTest{
????public?static?void?main(String[]args){
????Book?k1=new?Book();
????k1.setName("古龍");
????k1.getName();
???Book?k2=new?Book();
????k2.setName("天涯明月刀");
????k2.getName();
????System.out.println(k1.equals(k2));
}
}
4 回答

Goozy
TA貢獻6條經驗 獲得超4個贊
? ? ? ?你那個不是向下轉型的問題。我在eclipse看過,你那個方法在第一個if就退出了方法,下面的代碼就不會執行了,eclipse報錯是unreachable code:不會執行的代碼。你把向下轉型放在第一個if前面就沒有報錯。 還有所有類如果沒有說明繼承那個父類,默認是繼承Object。 ? ? ? ? ? ? ? ? ? ??
添加回答
舉報
0/150
提交
取消