Chapter Plan
This chapter describes Objective CAML's object extension. This extension
does not change any of the features of the language that we already
studied in the previous chapters. A few new reserved keywords are added for the object-oriented
syntax.
The first section describes class declaration syntax, object
instantiation, and message passing. The second section explains the various
relations that may exist between classes. The third section clarifies the
notion of object type and demonstrates the richness of the object extension,
thanks to abstract classes, multiple inheritance, and generic parameterized
classes. The fourth section explains the subtyping relation and shows
its power through inclusion polymorphism. The fifth section deals with
a functional style of object-oriented programming, where the internal state of
the object is not modified, but a modified copy of the receiving object is
returned. The sixth section clarifies other parts of the object-oriented
extension, such as interfaces and local declarations in classes, which allow
class variables to be created.