Das klingt ein bisschen Wirr.
Meinst Du vielleicht das sogenannte
Factory-Pattern?
Ansonsten macht die Geschichte nicht viel Sinn: Die abstrakte Basisklasse kann den eigentlichen Typen gar nicht kennen.
Man stelle sich vor, die abstrakte Basisklasse liegt in einem
Package, ein anderer Entwickler verwendet das
Package und leitet von ihr ab - z.B. von TTransporter auf THühnerTransporter. Diese Klasse liegt dann in einem
Package, das von Deinem
Package abhängt. Deine Basisklasse wird daher nie alle seine Ableitungen kennen und dorthin casten können.
Das eigentliche Objekt ist im übrigen immer vom konkreten Typ. Das heisst wenn eine methode zwangsläufig einen Schweinetransporter braucht und nur einen Transporter erhält, dann muss sie sich selber drum kümmern zu gucken ob da Schweine reinpassen und ihn nötigenfalls zum Schweinetransporter runtercasten.