//如果另一个对象和当前对象类型都不一样,那么肯定不相等,返回false
if (getClass() != obj.getClass())
return false;
//到这一步,传进来的对象肯定和当前对象类型一样了,那么为什么还要有下面的转换呢????????(求解)
Dog other = (Dog) obj;
大概是说,obj可能是父类的一个应用,eg:Animal obj=new Dog();
说错了请改正!
http://blog.csdn.net/kaiwii/article/details/8042488 多态的父类引用指向子类对象
前面只是判断了类对象是否一致 ,但是并不能保证类的对象也就是属性的值是否相同,如果属性的值不同就会返回false,提示两个对象不相等
这个是多态
if (getClass() != obj.getClass())
return false; 只是证明了 obj是Dog这个类的对象,但是多态的父类引用指向子类对象 这时的obj也满足上面的条件
所以就需要类型强转