猿问

看不懂Object的这个意思

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;


qq_踏雪_5
浏览 1169回答 1
1回答

慕慕1581088

这样可能抛异常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;elsereturn false;
随时随地看视频慕课网APP

相关分类

Java
我要回答