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
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 Symbol Components).
When defining a class, EIEIO overwrites any preexisting variable or function bindings for the symbol class-name, which may lead to undesired consequences. Before naming a new class, you should check for name conflicts. To help avoid cross-package conflicts you should choose a name with the same prefix you chose for the rest of your package's functions and variables (see Coding Conventions).
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 method's 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
Whenever defclass is used to create a new class, a predicate is
created for it, named CLASS-NAME