Dans la programmation orientée objet, une métaclasse est une classe dont les instances sont des cours. Tout comme une classe ordinaire définit le comportement de certains objets, une métaclasse définit le comportement de certaines classes et de leurs instances. Tous les langages de programmation orientés vers l'objet ne supportent pas les métaclasses.