equals方法重写

有时候,我们一个部门里有好几个人,比如,张三,李四等等。 假设我们一个部门是一个类,我们创建了张三和李四两个对象。我们在判断张三和李四是否是同一个部门的时候就不能用equals,如果用equals进行判断,会得出结果张三和李四是两个不同的部门,因此我们需要重写equals方法,比较她们是否在同一个部门。 本例子也用到重写。 以下为程序代码。 A类为部门类 class A { private String name; private int age; private String bumen; private String zhize; A(String name,int age,String bumen, String zhize){ //这是一个构造函数,用于初始化属性 this.name=name; this.age=age; this.bumen=bumen; this.zhize=zhize; } void PrA(){ System.out.println(name+"今年 "+age+" 岁,在 "+bumen+" 部门,任职 "+zhize+" 岗位"); } public boolean equals(Object obj){ if(this==obj) //判断是否是同一个对象 return true; if(!(obj instanceof A)) //判断是否是同一类型 return false; A bj=(A) obj; //强制转换obj为A类型 if(this.bumen.equals(bj.bumen)&&this.zhize.equals(bj.zhize)) return true; else return false; } } 以下为主类 public class object { /** * @param args */ public static void main(String[] args) { A a=new A("张三",23,"设计部","设计师"); A a2 = null; A a1=new A("李四",23,"设计部","设计师"); a2=a; a.PrA(); a1.PrA(); if(a==a1) //因这是两个不对的对象,其地址不一定,此时比较的是地址,因为不相等 System.out.println("a和a1为同一个引用对象"); else System.out.println("a和a1不为同一个引用对象"); if(a.equals(a2)) //此equals如果不重写,那么返回的是false System.out.println("a和a1在同一个部门"); else System.out.println("a和a1不在同一个部门"); } }

爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img