關于equals( )方法重寫的疑問?
重寫equals( )方法時,
if (getClass() != obj.getClass())
return false;
執行完后,已經保證了原有對象和傳入對象obj的類型相同,
為什么后面仍要執行
Dog other = (Dog) obj;
將傳入對象obj轉化為原有對象的Dog類型?
不可以這樣寫嗎?如下:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
if (age !=?obj.age)
return false;
return true;
}
2018-08-30
Object類是所有類的父類,跟Dog類不是同一類型的。需要向下轉型成Dog類,這樣才能比較。