锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

ADT和OOP中的等价性

时间:2023-10-18 23:37:01 ad7819yrz集成电路ic

目录

1.等价关系

2.Immutable等价类型

2.12定义等价性的角度

2.2Java中间,两种操作测试等价性

2.3equals()和hashcode

3.Mutable等价类型

3.1两种等价性

3.2等价性标准


在Java中存在mutableimmutable两种不同的数据类型有不同的等价判断

1.等价关系

等价关系应满足自反、对称和传递的特点

数学定义如下:

①自反性:任意x属于A,x与自己有关R,即xRx

②对称:任意x,y属于A,如果x与y具有关系R,即xRy,则y与x也具有关系R,即yRx

③传递:任意x,y,z属于A,如果xRy且yRz,则xRz

2.Immutable等价类型

2.12定义等价性的角度

①从AF角度,若AF如果映射到相同的结果,则等价

②从观察者的角度来看,对两个对象进行任何相同的操作都会得到相同的结果,认为这两个对象是相等的

2.2Java中间,两种操作测试等价性

①== 引用等价性

如果两个引用指向内存的相同存储器,则相同

②equals() 对象等价性

面向对象,是对两个对象性质的比较

Object中的equals()是引用等价性,所以当我们想使用它时equals()比较两个对象是否等价时,需要重写equals()注意:满足自反、对称、传递三个特点,但没有硬性要求rep每个域的值都是相等的,可以自己定义

2.3equals()和hashcode

假如两个对象equals()结果为true,对应他们hashcode是相同的,但反过来不成立

3.Mutable等价类型

3.1两种等价性

对于mutable就类型而言,我们应该考虑两个对象是否会改变

①观察等价性在某个时刻看起来是平等的

②行为等价性是两个对象一直相等的。

由于mutable类型是可变的,要保证每时每刻都是相等的,这其实是很苛刻的,要保证引用的等价性,只能让两者指向一个内存空间

对于可变类型,往往会实现严格的观察等价性,但观察等价性可能会导致bug,甚至破坏RI,因此,可以实现行为等价性,即指向相同的内存空间,直接继承Object可以,不需要重写equals和hashcode

3.2等价性标准

JDK中,不同mutable使用不同的等价标准-常识

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章