有时候,我们一个部门里有好几个人,比如,张三,李四等等。
假设我们一个部门是一个类,我们创建了张三和李四两个对象。我们在判断张三和李四是否是同一个部门的时候就不能用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/天,具体规则查看活动详情