Opaque Types: Data Structures with Full Encapsulation

By combining Modula-3's opaque types with interfaces, you can create abstract datatypes with full encapsulation. In this example, the Person interface exports an opaque type Person.T.

Nothing about the implementation of Person.T is visible to clients of Person. For more information on opaque types, see the language specification.