ARookie1234
2020-11-23 15:32
采纳率: 81.8%
浏览 154
已采纳

Java Object类 重写equals方法,根据姓名判断两个是否是同一个人

public  class  Test{
        public  static  void  main(String[]  args)  
        {
                Person  p1  =  new  Person("张三",  20);
                Person  p2  =  new  Person("张三",  20);
                System.out.println(p1.equals(p2));
        }
}

class  Person{
        private  String  name;
        private  int  age;

        public  Person(String  name,  int  age){
                this.name  =  name;
                this.age  =  age;
        }

        public  boolean  equals(Object  obj){
        //补写

        }
}
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • qq_25376897 2020-11-23 16:12
    已采纳
        public  boolean  equals(Object  obj){
            //补写
            if(obj==null){
                return false;
            }
            if(((Person)obj).name==null||this.name==null){
                return false;
            }
            if(((Person)obj).name.equals(this.name)){
                return true;
            }
            return false;
        }
    已采纳该答案
    打赏 评论
  • 血狱521 2020-11-23 18:36

    eclipse好像可以自动生成equals函数。

    打赏 评论
  • ARookie1234 2020-11-23 22:28

    主要问题是Person类的name属性是私有的,没办法直接获取强制转换后的obj对象的name属性

    打赏 评论
  • qq_25376897 2020-11-24 10:07

    重写的equals方法不是在Person类里面吗?跟私不私有没关系,都是自己的 ,怎么会“没办法直接获取强制转换后的obj对象的name属性”

    打赏 评论
  • ARookie1234 2020-11-24 16:13

    明白了,谢谢

    打赏 评论

相关推荐 更多相似问题