重写equals方法,相关实例内容

本文详细介绍了Java中Object类的equals方法及其重写原则,通过具体示例解释如何正确比较对象内容,并提供了IDEA生成equals方法的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、定义

    • Object类提供了一个方法 equals方法 :作用:比较对象具体内容是否相等。
    • 点进equals源码发现底层仍然用==比较!!!

        比较对象的内容是否一致:一致返回true!

                                                     不一致返回false!

1、父类中的缺点

对于引用数据类型来说,父类(Object)中提供的equals方法是比较对象的地址值,所以一定返回false;

2、改写父类的方法

2.1、代码实例

   引入 instanceof,代码块中有解释内容

        a instanceof b: //判断a对象是否是b这个类的实例,如果是 返回true 如果不是返回false

        如果返回true,则进行下一步,开始比较对象具体内容是否相等。

//对equals方法进行重写:
    public boolean equals(Object obj){
        
        a instanceof b:
     
        //判断a对象是否是b这个类的实例,如果是   返回true 如果不是返回false
       if(obj instanceof Phone){//属于Phone类的对象
            //将obj类型转为Phone类型:
            Phone other = (Phone)obj;//????多态中解释
            if(this.getBrand()== other.getBrand()&&this.getPrice()== other.getPrice()&&this.getYear()==other.getYear()){
                return true;
            }
        }
        return false;
    }

3、总结equals作用:

        这个方法提供了对对象的内容是否相等 的一个比较方式,对象的内容指的就是属性。

        父类Object提供的equals就是在比较==地址,没有实际的意义,我们一般不会直接使用父类提供的方法,而是在子类中对这个方法进行重写。

二、利用集成开发工具(IDEA)生成equals方法

  • 第一步:alt+insert
  • 第二步:点击蓝色光标处:

  • 第三步:点击Next,之后一直点击蓝色光标处,直至最后的Create

创建完成:

@Override:重写内容

@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Phone phone = (Phone) o;
        return Double.compare(phone.price, price) == 0 && year == phone.year && Objects.equals(brand, phone.brand);
    }

注意:

        利用该方法同时生成了 hashCode()方法,目前不涉及此方法,可以删去,或者保留,因为不使用,所以不会对我们的内容造成影响!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在摆烂的小母

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值