In this chapter we will investigate some of the implications of
the principle of substitution in statically typed object-oriented
programming languages. In particular, we will consider:
The impact on memory management
The meaning of assignment
The distinction between testing for identity and testing for equality