Als erstes würde ich TAnimal mal einen virtuellen Konstruktor verpassen.
Und die Variante mit
Class
müsste prinzipiell funktionieren, wenn du etwas ergänzt:
Delphi-Quellcode:
type
TAnimalCLass = class of TAnimal; // Stichwort "Class reference" oder "Metaklasse"
Animal2 := TAnimalCLass(Animal1.Class).Create;
(freihändig hingetippt)