Jest to nadawanie obiektom będącym instancjami danej klasy cech wspólnych z obiektami będącymi instancjami innej klasy lub nadawanie im cech zdefiniowanych przez inną klasę.
Rozróżnienie obu przypadków wprowadzono celowo ze względu na możliwość definiowania klas, dla których nie da się tworzyć instancji. Klasy te nazywane są klasami abstrakcyjnymi.