Metaklasse
# Metaklasse

Eine Metaklasse ist in der Objektorientierung die Klasse einer Klasse. Sie definiert Verfahren zum Erzeugen von Instanzen der Klasse, deren Metaklasse sie ist, sowie statische Methoden, also solche, für deren Ausführung keine Objekte benötigt werden.

Nicht alle objektorientierten Programmiersprachen unterstützen das Konzept der Metaklasse, manche unterstützen es nur zu einem gewissen Grad.

## Sprachen mit Metaklassen

Folgende Programmiersprachen unterstützen Metaklassen:

* Groovy
* Python
* Objective-C
* Perl
* Smalltalk
* Common Lisp, über CLOS
* Object Pascal (besonders in Delphi)
* Logtalk, eine objektorientierte Erweiterung von Prolog

sowie die Beschreibungssprachen:

* Resource Description Framework (RDF)
* Unified Modeling Language (UML).

Echte Metaklassen werden z. B. in Smalltalk und Python verwendet. Diese Metaklassen sind ihrerseits Klassen, von denen Unterklassen abgeleitet werden können.

In der Programmiersprache Java gibt es eine Klasse Class, die zwar wichtige Eigenschaften einer Metaklasse hat (sie kann beispielsweise Objekte anderer Klassen erzeugen), jedoch können hiervon keine spezielleren Metaklassen abgeleitet werden.

