equals()方法为什么只比较属性的值而不比较类的方法是否相同呢?

来源:6-1 学生选课---判断 List 中课程是否存在

白泽飞落

2018-01-04 09:02

equals()方法为什么只比较属性的值而不比较类的方法是否相同呢?

写回答 关注

2回答

  • Turtle_Man
    2018-03-15 18:08:42
    已采纳

    在老师重写的equals代码中开始有三个判定条件

    1. if (this == obj)        //如果直接可以用==判定会直接返回true

    2. if(obj==null)           //如果obj为null会直接返回false

    3. if(!(obj instanceof Course))    //注意这一条已经在判定obj和Course是否是同一类型了,只有在判定是同类型的情况下才会进行后续的(Course)obj强制类型转换,否则返回false。

    综上两个对象完全是同一类型的,那么他们可以调用的方法一定也相同。

    回到具体的例子中,我们程序的目的是判定List coursesToSelect中是否包含课程,我们的目的是通过Course.name属性判定是否存在包含关系。从实际角度出发,如果待选课程中包含

        1.高数    2.语文    3.毛概

    我们判定某个Course对象是否包含于其中的时候也只需要比较"高数",是不是和待选课程中的某一项名称一样,也就是只需要判定name属性就足够了。

    白泽飞落

    非常感谢!

    2018-03-15 22:19:46

    共 1 条回复 >

  • JudeWu
    2018-01-04 18:06:26

    题目没有看懂,Java中,非数值比较,通常使用equals方法。

    白泽飞落

    老师在重写equals()方法时,只比较了对象的属性值是否相同,我在问需不需要比较对象的方法,两个对象属性值相同,方法不一定相同啊

    2018-01-04 19:27:18

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题