public boolean equals(Object obj) {//括號里是創建了一個obj的Object類 if(obj==null) return false; Animal temp=(Animal)obj; ?//這里看不懂,(Animal)obj 為什么這么寫? if(this.getName().equals(temp.getName())&&( this.getMonth()==temp.getMonth())); return true; else return false;
1 回答
已采納

慕慕1581088
TA貢獻8條經驗 獲得超9個贊
這樣可能拋異常ClassCastException 類型轉換異常
強轉前應該判斷一下obj對象是不是Animal的類型的
public boolean equals(Object obj) {//括號里是創建了一個Object類型的引用? 相當于
//?Object obj = 傳入的參數 // 自動類型提升 即父類引用指向子類對象 Object是所有類的父類
if(obj==null)
return false;
// 如果objj對象是Animal類型的
if(obj instanceof Animal)
????Animal temp=(Animal)obj; ?// 將obj強轉成Animal類型 向下轉型?
????//因為這里要調用Animal類中的特有方法, 即getName(),getMonth(),
????//?Object中無此方法,為了保證編譯通過,只能將obj強轉成Animal類型 向下轉型?
if(this.getName().equals(temp.getName())&&( this.getMonth()==temp.getMonth()));
return true;
else
return false;
添加回答
舉報
0/150
提交
取消