最后那个equals的那个比较程序什么意思啊?好复杂

来源:9-9 Java 中的 Object 类 Ⅱ

慕粉0958453215

2016-11-21 12:09

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Dog other = (Dog) obj;

if (age != other.age)

return false;

return true;

}

这TM到底什么鬼?用来干什么?other这个对象怎么凭空来的?this指的是哪个对象?

写回答 关注

2回答

  • 生于忧患2016
    2016-12-12 12:27:13

    看下一节 多态 有答案。

  • 木子中心
    2016-11-21 13:18:56

    默认的epuals方法判断的是两个对象所指向的空间地址是否是同一个地址。这段代码就用来判断两个对象(分别指向不同的空间地址时)他们每个具体的属性的值是否相同。this==obj这句的意思就是比较当前操作的对象与obj这个对象的空间地址是否相同(this就是代表操作当前的对象obj就是比较的那个对象。).这里的other是他自己强制将obj对象转换为Dog类的对象然后将这个对象赋给other,这里的other就起到了引用的作用。这是默认的。如果你自己写的话也可以随意的用一个词来代替other一样的。就跟你的名字一样是个代号。

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530559 学习 · 6091 问题

查看课程

相似问题