Typing the specialization interface

Current typing systems for object oriented programming leave out crucial information about the specialization interface, the interface between a class and the subclasses that specialize it. In particular, the internal interdependencies among a class’s methods, which profoundly affect the consequences of overriding, are not described. We show how typing systems can be extended to describe this information. This technique of extending typing is independent of any particular type system. It also suggests a new relationship among the client interface, the specialization interface, and inheritance.