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
提交
取消