delphi surcharge, de remplacer, de méthode virtuelle

simple hiérarchie de l'objet comme ci-dessous

TLiveThing=class
protected
 FTest:string;
 constructor Create(whereLive:string);overload;virtual;
 constructor Create(haveBone:Boolean);overload;virtual;
end;

THuman=class(TLiveThing)
public
 constructor Create(whereLive:string);overload;override;
 constructor Create(age:integer);overload;
end;

en théorie, si j'instancie THuman, j'ai 2 constructeur, mais en fait j'ai 5 constructeur affiché par le code de la perspicacité, en fait, je veux voir 3 constructeur
- Créer(whereLive:String), surchargée
- Créer(âge:entier)
- Créer(haveBone:integer)

human:=THuman.Create(       <=====in there I have 5 suggestion constructor

pourquoi j'ai ce comportement étrange? comment résoudre le problème, parce que ça tellement souvent embêtant, je ne peux toujours vérifier ma classe que j'ai besoin d'instancier, et si j'instancie comme ci-dessous

human:=THuman.Create(); <===== it doesnt give me error

comment j'ai complètement cacher mon anchestor constructeur? parce que si je démarrent des instances comme ci-dessus, complètement me donner un mauvais objet

Mise à JOUR: et aussi je peux voir Créer par défaut sans paramètre de TObject trop

Vous avez trop de constructeurs virtuels. Vous avez besoin d'avoir un seul de ceux-ci.
Êtes-vous sûr que vous avez besoin des constructeurs virtuels? Avez-vous jamais en fait instancier une de ces classes sans connaître le type au moment de la compilation? Si pas, alors vous n'avez pas besoin des constructeurs virtuels.
Il est difficile de vous conseiller ici, parce que nous ne savons pas quel est le moteur que vous avez tellement de surcharge et des constructeurs virtuels. Sur le visage de votre ensemble de la conception des odeurs. Mon intuition est que la fixation du design permettra de résoudre les problèmes. Tenter de masquer les constructeurs s'apparente à mettre des vêtements peg sur votre nez. La conception encore des relents, vous ne pouvez pas le sentir.
oke, je mets à jour ma question pour préciser mon point de vue, parce qu'en fait dans mon code, à la fois constructeur ont complètement différent paramètre et j'ai parfois besoin de remplacer à la fois du constructeur de la classe de base, et parfois je viens d'utiliser le constructeur de la classe de base. Bien sûr, je peux renommer un autre constructeur pour CreateByWhereLive ou de quelque chose de différent pour contourner ce problème, et je peux le faire fonctionner correctement, mais si j'utilise "Créer", je ne comprends pas pourquoi il ont un comportement comme ça...
j'ai besoin de tous que la surcharge et virtuel constructeur. je prie de différer. Vous ne devriez pas avoir plus d'un constructeur virtuel. Si vous le faites, votre conception est erronée.

OriginalL'auteur navirius | 2013-05-25