Une généralisation abstraite est très similaire à la relation de généralisation ou d'héritage entre des classes. Avec la généralisation abstraite, une classe parent contraint la classe enfant à hériter certaines fonctionnalités pour créer une interface.
Par exemple, lorsque vous visualisez une classe et une généralisation abstraite C/C++, une classe parent peut devenir une interface ou un canevas de conception. La classe Car (véhicule) est une classe parent qui utilise une généralisation abstraite. La classe Car devient un canevas de conception ou une interface pour tous ses enfants en les contraignant à utiliser certaines opérations. La classe enfant Boat (bateau) hérite différentes opérations de la classe Car. La classe Boat ne peut pas être implémentée sans utiliser ces opérations. La classe Car opère ainsi comme une interface de conception pour tous ses enfants.
Dans les diagrammes de classes de modélisation de domaine, une généralisation abstraite est figurée par l'affichage distinctif du titre de la classe concernée. Une classe parent qui utilise une généralisation abstraite a un titre de classe en italique. De même, toutes les opérations qui sont héritées par ses enfants (opérations purement virtuelles) apparaissent aussi en italique.
La figure suivante illustre les différences entre une relation de généralisation normale et une relation de généralisation abstraite.
| Généralisation normale C/C++ | Généralisation abstraite C/C++ |
![]() |
![]() |