zoukankan      html  css  js  c++  java
  • 软件构造--关于等价性和override的一点理解和总结

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

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

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

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

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

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

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

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

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

    改正如下:

    注意重写和重载的区别:

  • 相关阅读:
    JSON.parse()和JSON.stringify()(转载)
    Bootstrap 栅格系统(转载)
    基于Java的WebSocket推送【转载】
    VirtualBox中的虚拟机要如何设置,才能够上网
    String类和StringBuffer类的区别
    split命令参数及用法详解
    linux du小练习
    内部类(innerclasses)、匿名对象
    构造器、方法的重载、方法的重写
    继承、封装、多态、抽象、接口
  • 原文地址:https://www.cnblogs.com/lllllllm/p/14960409.html
Copyright © 2011-2022 走看看