No I havent tested any of this, but it may be worth a try.
Instead of inheritance try delegation
instead of (example with finale types)
type TCircularQueueFoo = class(TQueueFoo);
do
type TCircularQueueFoo = class(TObject);
private
theQueue: TQueueFoo
then of course, you need to have all the methods that TAbstractQueue implemented (at least public ones) and just forward (delegate) them to the "theQueue" object.
and (now I do not know if it works ...) for generics
type generic TQueue<A>= ....
type
generic TCircularQueue<A>= class(TObject)
private
type
TTheQueue = specialize TQueue<A>
var
FTheQueue: TTheQueue