Based on RFC 4512, object classes can be a combination of three different types:

Abstract object classes
Used as the base object class from which structural or auxiliary classes inherit its properties.

This inheritance is a one-way relationship because abstract object classes cannot be derived from structural or auxiliary classes. The most common abstract object class is top, which defines the highest level object class in a hierarchical chain of object classes.

Structural object classes
Define the basic attributes in an entry and define where an entry can be placed in a directory information tree (DIT).

All entries in a DIT belong to one structural object class. Structural object classes can inherit properties from other structural object classes and from abstract object classes to form a chain of inherited classes. For example, the inetOrgPerson structural object class inherits properties from the organizationalPerson structural class, which inherits from another object class, person.

Auxiliary object classes
Used together with structural object classes to define additional sets of attributes required in an entry.

The auxiliary object class cannot form an entry alone but must be present with a structural object class. Auxiliary object classes cannot derive from structural object classes or vice-versa. They can inherit properties from other auxiliary classes and from abstract classes.