• 软件构造--关于等价性和override的一点理解和总结


    在老师上课的ppt中,关于等价性和override overload方面还是有一点迷糊,所以来梳理一下,总结一下。其实也不是总结,就是分享一下这个菜鸡的心理路程。

    在刚刚理解到时觉得是正确的,但下课后和室友讨论时,又不太能理解这个重载和重写的区别。

    在没有学习这节课前,我是觉得这个考的不就是1+1=2吗,怎么会不相等,甚至不知道为什么要写一个hashcode。实践出真知,见下图:

    (写的时候变量名就随便写了,不太严谨见谅)

    答案是false,其实也不出意料,一般都是又特点的题老师才能专门提出来。但我还是觉得hashcode能有什么用,于是给他注释了:

    答案当然还是false,同时我也想是不是object的问题(这里可以看出来本人的基础知识叭太行),这里这样改不改其实都是一样的不会影响答案。

    于是我按照老师给的方法来进行

    还是不对,这是为什么呢,我们安装这个想法来说应该是对的,我就发现,我并没有理解到为什么要这么写。

    其实这里是对hashset的equals函数的override,同时必须要有hashcode的override,而hashset的equals的参数是object,而我这里把参数改变了,就变成了重载,当然就比较是错误的,因为根本没有将自己写的这个类给加载进去,比较还是按照hashset最原来的方式比较(必须是同一个才行)。这里就是我没有理解将equals的参数写错了。

    改正如下:

    注意重写和重载的区别:

  • 相关阅读:
    取消chrome(谷歌浏览器)浏览器下最小字体限制
    函数声明方式及作为值的函数
    常用的正则表达式
    8腾讯云服务器账号密码
    errno -4058 and npm WARN enoent ENOENT 解决方案
    node gyp的问题
    npm 版本问题
    无缘无故出现npm 解析异常的的问题 解决方案
    idea注册码
    以太坊测试网络 账号密码
  • 原文地址:https://www.cnblogs.com/lllllllm/p/14960409.html
Copyright © 2020-2023  润新知