提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
@equals方法的改写
前言
1.equals是Object的方法
2.Object是Java中最高的父类
3.所有类都可以调用Object的方法
一、问题
编写Order类,有int型的orderld,String型的orderName两个属性,设置对应的get及set方法,设置两个参数(属性)的构造器。重写父类的equals方法,使其达成以下效果:
XXX a=new XXX(x,“y”);
XXX b=new XXX(x,“y”);
改写规则前,a.equals(b)判断的结果应该为false
现要求重写equals的方法,使a.equals(b)的结果为ture。
二、代码如下
1.Order类的编写
代码如下:
public class Order {
int orderld;
String orderName;
//分别设置 int 和 String的属性
public Order(int i,String name){
this.orderld=i;
this.orderName=name;
//这一步的目的是设置两个参数的构造器
}
//以下为设置set和get的方法
public int getOrderld() {
return orderld;
}
public void setOrderld(int orderld) {
this.orderld = orderld;
}
public String getOrderName() {
return orderName;
}
public void setOrderName(String orderName) {
this.orderName = orderName;
}
//以下重写equals方法
@Override
public boolean equals(Object obj) {
boolean flag=false;//先设置一个布尔参数,使其属性为false(后面需要引用false的参数)
if(obj instanceof Order){//首先判定这个对象是否属于我们需要比较的类
Order o= (Order) obj;//如果是我们需要的比较的类,我们设置一个对象去接收这个需要比较对象的值
if(this.orderld == o.orderld && this.orderName.equals(o.orderName)){
//这一步设置的目的,是判定两个对象不同的值和属性,是否是相同的
//此处数据类型使用==的方法进行比较,字符类使用equals的方法比较
flag=true;//如果上述条件达成,那么设定false=ture,完成题干的目的
}
} return flag;//输出这个最终结果
}
}
2.新建对象测试是否改写成功
代码如下:
public class Test {
public static void main(String[] args) {
Order o1=new Order(123,"kk");//使用构造器构建对象o1,并设置参数,参数与o2保持一致
Order o2=new Order(123,"kk");//使用构造器构建对象o2,并设置参数,参数与o1保持一致
System.out.println(o1.equals(o2));//输出结果为ture,equals方法改写成功
}
}
总结
多回顾equals改写的代码,理解其改变的含义。