Formally defined methods and classes for R objects, plus other programming tools, as described in the references.
This package provides the “S4” or “S version 4” approach to methods and classes in a functional language.
For basic use of the techniques, start with Introduction and
  follow the links there to the key functions for programming, notably
  setClass and setMethod.
Some specific topics:
Creating one, see setClass;
        examining definitions, see getClassDef and
        '>classRepresentation; inheritance and coercing,
      see is and as
Basic programming, see
      setGeneric; the class of objects, see
      '>genericFunction; other functions to examine or
      manipulate them, see GenericFunctions.
Using classes, see setOldClass; methods,
       see Methods_for_S3.
See ReferenceClasses.
See setClassUnion.
These pages will have additional links to related topics.
For a complete
  list of functions and classes, use library(help="methods").
Chambers, John M. (2016) Extending R, Chapman & Hall. (Chapters 9 and 10.)
Chambers, John M. (2008) Software for Data Analysis: Programming with R Springer. (Chapter 10 has some additional details.)