软件构造期末复习06 ADT与OOP中的等价性

immutable类型的等价性

一、从三种角度定义等价性
  • 等价关系
  • AF(a)==AF(b)
  • 观察等价性 :对两个对象调用任何相同的操作,都会得到相同的结果,则认为这两个对象是等价的
  • 注 : 前两种等价是完全相同的
二、 ==
  • 对于primitive,==判断的是值是否相等
  • 对于reference,==判断的是内存地址是否相等
三、equals
The contract of equals
  • equals必须定义等价关系:自反、传递、对称
  • 除非对象被修改了,否则调用多次equals应是同样的结果
  • 遇到null时返回false
  • 相等的对象,其hashCode的结果必须相等
hashCode
  • 只要重写equals,必须重写hashCode
  • hashCode设计方法 : 通过equals计算中用到的所有信息的hashCode组合出新的hashCode

mutable类型的等价性

一、观察等价与行为等价
  • 观察等价 : 不调用mutator的情况下(也就是不改变状态的情况),是否相等
  • 行为等价 : 调用对象的任何方法都展示出一致的结果
  • 对于immutable类型,观察等价也就意味着行为等价,因为immutable没有mutator
二、Java库中的惯例
  • 在JDK中,不同的mutable类使用不同的等价性标准
  • 不要将mutable类型放在HashSet中,因为,当mutable改变后,HashSet中的HashCode没有同步改变
三、结论
  • 对于mutable类型,需要通过"=="运算符实现行为等价性,也就不需要重写equals

等价性总结

  • immutable必须重写equals与hashCode
  • mutable不应该重写equals与hashCode
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值