等价性梳理
引用等價性 VS 對象等價性
對象等價性
注意不可變對象,上面兩個條件都必須滿足,不能出現一個滿足一個不滿足的情況。
引用等價性
兩個引用指向同一個內存空間
關系
引用等價性是對象等價性更嚴格的形式。在Java中,缺省的equals方法就是實現了引用等價性。除此之外,當對一個引用使用equals方法,語義上是判斷對象等價性,因此需要重寫。使用==語義上是判斷引用等價性。
觀察等價性 VS 行為等價性
**PS:**注意觀察等價性和行為等價性依然屬于對象等價性的范疇,即兩個對象無法通過方法來區分
觀察等價性
在不改變狀態的情況下,兩個mutable對象是否看起來一致 Date,Collections
行為等價性
調用對象的任何方法,兩個對象都展示出一致的結果(指向同一內存空間) StringBuilder
關系
二者分別從變化和不變化的角度描述了等價性。需要注意的是,對于immutable類型,觀察等價性和行為等價性一致。
總結
- 上一篇: 5、抽象详解
- 下一篇: 51nod 1535 深海探险【思维+并