In Sprachen wie C++ ([Str86]) und Eiffel ([Mey88]), in denen Klassen die einzige Art von Modul sind, ist Vererbung die gewöhnliche Methode, um Abstraktionen zu kombinieren. Um zum Beispiel in Eiffel eine Klasse Bounded_Stack[T] zu realisieren, könnte man von einer abstrakten Klasse Stack[T] und von einer zweiten Klasse Array[T] erben. Die Klasse Array[T] würde man dann benutzen, um die abstrakten Operationen zu implementieren, die nicht von der Klasse Stack[T] definiert sind. Idealerweise sollten dabei die Array-Operationen vor dem Benutzer verborgen werden.
Diese Art von Vererbung kann in Ada bereits ohne getaggte Typen, nur unter Zuhilfenahme von Paketen erreicht werden.
package Bounded is