The class of a class in an object-oriented programming language. A metaclass is a class whose instances are themselves classes. Typically there will only be one metaclass, called "Class" or similar, which is the class of all classes including itself. In some languages there will be no metaclass.

The idea of a metaclass is closely associated with introspection - the ability of a program to access the structure and logic of itself or other programs.