运行不出正确答案

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

用心去专注

2018-01-21 23:09

DOG类中:

@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;

}


调用的类:

package com.exe02;


public class Inital {

  public static void main(String[] args){

 Dog dog=new Dog();

 dog.age=60;

 Dog dog2=new Dog();

 dog2.age=70;

 if(dog.equals(dog2)){

 System.out.println("两个对象相同");

 }

 else{

 System.out.println("两个对象不同");

 }

  }

}

结果还是不同

写回答 关注

4回答

  • 痞子姚
    2018-01-21 23:59:06
    已采纳

    两个对象属性不同,当然输出结果"两个对象不通"啊.

    dog.age=60,

    dog2.age=60.

    这样结果才是相同.

    用心去专注

    谢谢,明白了

    2018-01-22 19:08:45

    共 1 条回复 >

  • qq_颜子明_0
    2018-01-25 11:05:59

    为什么我的两个对象的属性值不同,运行结果还是相同。。。

  • xcopfans
    2018-01-22 19:01:54

    当然不同啦

    if (obj == null)

        return false;

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

        return false;

    Dog other = (Dog) obj;

        if (age != other.age)

    return false;

    你重写的方法有这三种情况是返回 false ,第二种和第三种都满足了

    xcopfa... 回复用心去专注

    啊..等一下,我说错了,第二种没有满足,诶嘿嘿

    2018-01-22 20:42:21

    共 2 条回复 >

  • zhima123
    2018-01-22 09:55:06

    结合上面那位童鞋的答案,两个对象属性相同,但,属性值不同,即age的值不想等

Java入门第二季 升级版

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

530561 学习 · 6091 问题

查看课程

相似问题