equals方法的改写

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@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改写的代码,理解其改变的含义。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值