A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汤姆纳斯 高级黑马   /  2014-6-11 12:59  /  1887 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 汤姆纳斯 于 2014-6-23 16:50 编辑
  1. class Person extends Object
  2. {
  3.         private int age;

  4.         public boolean equals(Object obj)//为什么括号里是Object呢?为什么不是Person呢?毕老师的视频说是覆盖,覆盖什么呢?
  5.         {
  6.                 return this.age==obj.age;
  7.         
  8.         }
  9. }
复制代码

16 个回复

倒序浏览
这是基本方法 不难的?你遇到什么问题了?
回复 使用道具 举报
equals 比较的是对象值。“==”比较的是值地址。。。
回复 使用道具 举报
youngkay 发表于 2014-6-11 13:06
这是基本方法 不难的?你遇到什么问题了?

我把问题改了下
回复 使用道具 举报
Object是所有子类的父类,所以用它来表示某个子类,你可以修改的
回复 使用道具 举报
Object是所有类的父类     也就是所当为Object的时候是可以接受所有的类
回复 使用道具 举报
首先,覆盖什么
  覆盖的是Object类的同名方法 equals
其实,为什么不是Person,而是Object。也就是为什么要覆盖,你想Object下面肯定不止一个Person类,可能还有People类,Child类,Woman类,Soilder类...,但是他们都有一个age属性,如果Person要判断是不是和People,Child,Woman,Soilder... age是不是相等,需要写
   public boolean equals(People obj)
                public boolean equals(Child obj)
                public boolean equals(Woman obj)
                public boolean equals(Soilder obj)
                ...
回复 使用道具 举报 1 0
但是如果用他们的父类,通过多态的方式传递参数进去  上面那么多方法只需要简写成
public boolean equals(Object obj)
回复 使用道具 举报
学习了啊 {:3_62:}
回复 使用道具 举报
你这个类重写了Object的 equals方法而已 没什么特别啊
回复 使用道具 举报
覆盖父类的equals方法啊
回复 使用道具 举报
这里的equals方法覆盖了Object里面的equals方法,覆盖的是方法啊,用这方法来保证数据的唯一性的
回复 使用道具 举报
个人觉得写Person也是没有问题的,但是无法实现你想要的功能,equals这个功能是 是判断两个对象的内容是否相等,如果Object改成Person,那么相比较的两个对象都必须是Person类型的,无法和别的类中的对象进行比较,呢么就有了一个局限性,而Object作为父类,就不存在这样的问题。

回复 使用道具 举报
怎么没有大神详细的解释呢
回复 使用道具 举报
Object是所有类的基类,这个你可以查询jdk文档了解,所有类都继承自Object。  Object ...objects这种参数定义是在不确定方法参数的情况下的一种多态表现形式。即这个方法可以传递多个参数,这个参数的个数是不确定的。这样你在方法体中需要相应的做些处理。因为Object是基类,所以使用Object ...objects这样的参数形式,允许一切继承自Object的对象作为参数。这种方法在实际中应该还是比较少用的。  Object[] obj这样的形式,就是一个Object数组构成的参数形式。说明这个方法的参数是固定的,是一个Object数组,至于这个数组中存储的元素,可以是继承自Object的所有类的对象。 这些基础东西建议你多看几遍"Think in java"
回复 使用道具 举报
Object类里面有个方法是equals() 只是重写了下
回复 使用道具 举报
如果自定义对象想要使用equals()需要重写该方法!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马