Une classe est une construction d'un langage de programmation qui représente un type non paramétré. Les types représentés par des classes ne sont pas mutuellement exclusifs ; en fait les classes forment une arborescence, en réalité un graphe orienté sans cycle (en Anglais : directed acyclic graph) (DAG), le graphe d'héritage.
Une classe (et donc le type correspondant) est créée par spécialisation d'une ou plusieurs classes existantes. Une classe créée par spécialisation d'une autre classe (et peut-être d'autres classes aussi) est une sous-classe de . On dit aussi que hérite de et que est dérivée de . La classe est appelée la classe mère de . Le graphe d'héritage représente donc la relation de sous-ensemble sur les types.
Un objet est toujours l'instance directe d'une seule classe. Cette classe est la classe de l'objet. Un objet instance directe d'une classe est aussi instance (indirecte) de toutes les classes ancêtres de .
L'héritage peut être simple ou multiple selon le langage de programmation. Si l'héritage est simple, une classe peut être dérivée d'au plus une autre classe et le graphe d'héritage est un arbre. De plus, si l'héritage est simple, deux types et représentés par des classes sont forcément apparentées de l'une des trois façons suivantes :
En revanche, si l'héritage est multiple, deux classes et peuvent avoir des éléments en commun sans que et soient apparentées par héritage. Il suffit qu'il existe une classe qui hérite (même indirectement) à la fois de et de . Les éléments de sont alors communs à et .
Irene DURAND