All of this is simply to say that we must be working with two separate concepts here. The runtime shape and properties of the values that end up flying around when a program actually runs. This we call class. The compile-time, statically-discoverable shape and properties of the expressions that fly around when a program is written. This we call type.