Mutable classes should not inherit from Immutable ones
punkstarman opened this issue · comments
A mutable class that inherits from an immutable one does not respect the Liskov Substitution Principle, a.k.a. the L in SOLID. An immutable object and its responses to getters can be cached indefinitely whereas a mutable object does not allow this.
For example, AbstractPersistentArray
inherits from AbstractPersistentImmutableArray
, adding setters that render what should be immutable, per the contract of AbstractPersistentImmutableArray
.
This may just be a naming issue. If a suitable replacement for the term Immutable
were found that doesn't imply a specific contract, for instance Readable
.