We define an extension of a second-order type system with records and operations on them, including record concatenation. Our aim is to model the most important concepts in object-oriented languages in a type system with subtyping. Such a model needs a form of record concatenation.
The novelty in our approach is that intersection types are used for record concatenation.
We give examples of how object-oriented concepts can be modelled and show how the system can be translated to a type system without subtyping.