打字猴:1.700442186e+09
1700442186 编写高质量代码:改善Java程序的151个建议 [:1700438116]
1700442187 编写高质量代码:改善Java程序的151个建议 建议47:在equals中使用getClass进行类型判断
1700442188
1700442189 本节我们继续讨论覆写equals的问题。这次我们编写一个员工Employee类继承Person类,这很正常,员工也是人嘛,而且在JEE中JavaBean有继承关系也很常见,代码如下:
1700442190
1700442191 class Employee extends Person{
1700442192
1700442193 private int id;
1700442194
1700442195 /*id的getter/setter方法省略*/
1700442196
1700442197 public Employee(String_name, int_id){
1700442198
1700442199 super(_name);
1700442200
1700442201 id=_id;
1700442202
1700442203 }
1700442204
1700442205 @Override
1700442206
1700442207 public boolean equals(Object obj){
1700442208
1700442209 if(obj instanceof Employee){
1700442210
1700442211 Employee e=(Employee)obj;
1700442212
1700442213 return super.equals(obj)&&e.getId()==id;
1700442214
1700442215 }
1700442216
1700442217 return false;
1700442218
1700442219 }
1700442220
1700442221 }
1700442222
1700442223 员工类增加了工号ID属性,同时也覆写了equals方法,只有在姓名和ID号都相同的情况下才表示是同一个员工,这是为了避免在一个公司中出现同名同姓员工的情况。看看上面的代码,这里校验条件已经相当完备了,应该不会再出错了,那我们编写一个main方法来看看,代码如下:
1700442224
1700442225 public static void main(String[]args){
1700442226
1700442227 Employee e1=new Employee(“张三”,100);
1700442228
1700442229 Employee e2=new Employee(“张三”,1001);
1700442230
1700442231 Person p1=new Person(“张三”);
1700442232
1700442233 System.out.println(p1.equals(e1));
1700442234
1700442235 System.out.println(p1.equals(e2));
[ 上一页 ]  [ :1.700442186e+09 ]  [ 下一页 ]