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 Metaklassenkonzept bzw. manche tun es nur zu einem gewissen Grad.
Sprachen mit Metaklassen
Die folgenden 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) und Unified Modeling Language (UML)
Echte Metaklassen werden zum Beispiel in der Programmiersprache Smalltalk oder auch 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.