黑马程序员技术交流社区

标题: 我去,面向对象竟然出问题了 [打印本页]

作者: 冷锋也温柔    时间: 2014-9-10 17:17
标题: 我去,面向对象竟然出问题了
遇到一个很郁闷的问题  本来以为很简单的
class person{
        public static void main(String[] args) {
                celient c =new celient();
                c.setName("jake");
                c.setAge(43);
                celient c1 =new celient();
                c.setName("jake");
                c.setAge(43);
                celient c2 =new celient();
                c.setName("mark");
                c.setAge(39);
                System.out.println(c.equals(c1));false这个应该true啊,运行后为false 求解释
                System.out.println(c.equals(c2));false
                System.out.println(c1.equals(c2));true这个应该false,运行后为true 求解释
        }
}

图片.JPG (120.32 KB, 下载次数: 26)

求大神指教

求大神指教

作者: bullfrog    时间: 2014-9-10 17:19
你用的从Object继承下来的equals方法,当然是这个结果,Object又不知道你想要比姓名、年龄。
作者: 冷锋也温柔    时间: 2014-9-10 17:25
bullfrog 发表于 2014-9-10 17:19
你用的从Object继承下来的equals方法,当然是这个结果,Object又不知道你想要比姓名、年龄。 ...

我重写equas hashcold方法了啊    应该c和c1相同      c1和c2的地址值及内容都不同  怎么能true呢

作者: bullfrog    时间: 2014-9-10 17:36
知道了,你一直设置 c 的属性,c1, c2都没动过
作者: 范鹏霄    时间: 2014-9-10 17:50
一直都是c.setXX。。。
作者: dftgg    时间: 2014-9-10 18:09
一直是c
作者: 默默丶    时间: 2014-9-10 19:03
你一直在重新向方法里面传送的是c对象啊 我也是醉了
作者: 卖艺人    时间: 2014-9-10 19:10
好多C啊,多C多健康
作者: 舍我其谁    时间: 2014-9-10 19:54
复写equals 方法,如果复写了,就检查复写的是否正确
作者: 会飞De石头    时间: 2014-9-10 20:44
这么多c,你让c1,c2情何以堪
作者: 曾小贤OL    时间: 2014-9-10 21:12
偶哈哈,小细节,隐藏的好深
作者: happymouse    时间: 2014-9-10 23:40
经楼上提醒才发现,以后要多注意细节啊
作者: 爽朗的菜籽    时间: 2014-9-11 02:34
  最后一个 为什么会是 true 呢。。话说 能把另一个 celient 贴出来么
作者: 雪碧拌米饭    时间: 2014-9-11 03:32
哥们喝酒了?一直都是c.啊,没动c1和c2啊。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2