Abstract
We describe an object calculus that allows both extension of objects
and full width subtyping (hiding arbitrary components). In contrast
to other proposals, the types of our calculus do not mention
``missing'' methods. To avoid type unsoundness, the calculus mediates
all interaction with objects via ``dictionaries'' that resemble the
method dispatch tables in conventional implementations. Private
fields and methods can be modeled and enforced by scoping
restrictions: forgetting a field or method through subsumption makes
it private. We prove that the type system is sound, give a variant
which allows covariant self types, and give some examples of the
expressiveness of the calculus.