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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© endlessjoker 中级黑马   /  2014-3-21 09:07  /  863 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么时候同一父类的各个子类需要定义的equals不相同?我想不到。。。

1 个回复

倒序浏览
当个子类中比较的内容不同时,就需覆盖父类中的equals方法来实现自己的比较方式
如:

  1. class Person
  2. {
  3.         private String name;
  4.         private int age;
  5.         person(String name, int age)
  6.         {
  7.                 this.name = name;
  8.                 this.age = age;
  9.         }
  10.         //通过姓名和年龄
  11.         public boolean equals(Object obj)
  12.         {
  13.                 if(obj instanceof Person)
  14.                 {
  15.                         Person p = (Person)obj;
  16.                         return this.name.equals(p.name)&&this.age==p.age;
  17.                 }
  18.                 return false;
  19.         }
  20. }
  21. class Student extends Person
  22. {
  23.         private String stuID;
  24.         Student(String name, int age, String stuID)
  25.         {
  26.                 super(name,age);
  27.                 this.stuID = stuID;
  28.         }
  29.         //通过姓名、年龄、学号
  30.         public boolean equals(Object obj)
  31.         {
  32.                 if(obj instanceof Student)
  33.                 {
  34.                         Student stu = (Student)obj;
  35.                         return this.name.equals(stu.name)&&this.age==stu.age&&this.stuID.equals(stu.stuID);
  36.                 }
  37.                 return false;
  38.         }
  39. }
复制代码

假如还有个工人类继承了Person,那么就可以是姓名、年龄、工号

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马