zoukankan      html  css  js  c++  java
  • Java中equals的覆盖

    当子类从父类继承下来的方法不再适合子类的需要的时候,要在子类中对该方法重新定义,这种形式称为方法的覆盖(Override)

    方法覆盖的要求
        * 访问权限不能降低
        * 返回类型必须相同
        * 方法名称必须相同;
        * 参数列表必须相同
        * 抛出的异常不能扩大
        * 在继承关系的子类中进行覆盖
        * 只能覆盖一次

    覆盖equals()的套路:
       比较地址
        判断参数是否是Person类型的,如果是,进行强制类型转换,也就是还原
        逐个比较当前对象和参数对象的属性

    //当我们需要比较一个类的两个对象的内容是否相同的时候,我们就需要在该类中覆盖equals()

    public boolean equals(Object obj) {
            System.out.println("Person类的equals()方法被调用");

            // 如果两个引用地址相同,直接返回true
            if (this == obj) {
                return true;
            }

            // 判断obj是否是Perosn的实例或obj是否是Person类型的,也就是判断是否是还原的过程
            if (obj instanceof Person) {
                // 引用类型也可以进行强制类型转换.引用类型的强制类型转换实际上就是一个还原的过程
                Person per = (Person) obj;
                // this.name.equals()调用的是String的equals(),因为String类中已经覆盖了equals()
                if (this.age == per.age && name.equals(per.name)) {
                    return true;
                }
            }

            return false;
        }

  • 相关阅读:
    django_开发报错
    SpringBoot 前后端数据参数交互
    消息队列学习笔记(一)
    2021年调用工商二维码退款查询接口
    2021年调用工商二维码退款接口
    2021年调用工商二维码生成接口及回调接口demo
    调用工商生成二维码接口文档的坑
    使用hutool工具类转换时间
    微信模板消息推送
    pom文件 spring-boot-maven-plugin 爆红
  • 原文地址:https://www.cnblogs.com/zwjcom/p/11134334.html
Copyright © 2011-2022 走看看