eieio: Building Classes

 
 3 Building Classes
 ******************
 
 A “class” is a definition for organizing data and methods together.  An
 EIEIO class has structures similar to the classes found in other
 object-oriented (OO) languages.
 
    To create a new class, use the ‘defclass’ macro:
 
  -- Macro: defclass class-name superclass-list slot-list &rest
           options-and-doc
 
      Create a new class named CLASS-NAME.  The class is represented by a
      symbol with the name CLASS-NAME.  EIEIO stores the structure of the
      class as a symbol property of CLASS-NAME (See(elisp)Symbol
      Components).
 
      The CLASS-NAME symbol’s variable documentation string is a modified
      version of the doc string found in OPTIONS-AND-DOC.  Each time a
      method is defined, the symbol’s documentation string is updated to
      include the methods documentation as well.
 
      The parent classes for CLASS-NAME is SUPERCLASS-LIST.  Each element
      of SUPERCLASS-LIST must be a class.  These classes are the parents
      of the class being created.  Every slot that appears in each parent
      class is replicated in the new class.
 
      If two parents share the same slot name, the parent which appears
      in the SUPERCLASS-LIST first sets the tags for that slot.  If the
      new class has a slot with the same name as the parent, the new slot
      overrides the parent’s slot.
 
      When overriding a slot, some slot attributes cannot be overridden
      because they break basic OO rules.  You cannot override ‘:type’ or
      ‘:protection’.
 
 Whenever defclass is used to create a new class, a predicate is created
 for it, named ‘CLASS-NAME-p’:
 
  -- Function: CLASS-NAME-p object
      Return non-‘nil’ if and only if OBJECT is of the class CLASS-NAME.
 
  -- Variable: eieio-error-unsupported-class-tags
      If non-‘nil’, ‘defclass’ signals an error if a tag in a slot
      specifier is unsupported.
 
      This option is here to support programs written with older versions
      of EIEIO, which did not produce such errors.
 

Menu