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

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

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

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

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

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

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

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

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

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

改正如下:

注意重写和重载的区别:

原文地址:https://www.cnblogs.com/lllllllm/p/14960409.html