имеет простую иерархию объектов, как показано нижеДельфи перегрузки, переопределение, виртуальный метод
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;
в теоретически, если экземпляр THuman, у меня есть 2 конструктор, но на самом деле я 5 Конструктор отображается код понимания, на самом деле я хотят видеть 3 конструктора, - Create (whereLive: String), перекрываться - Создать (возраст: Integer) - Создать (haveBone: Integer)
human:=THuman.Create( <=====in there I have 5 suggestion constructor
почему у меня это странное поведение? как исправить это, потому что это так anoying, я не могу всегда проверить мой класс, что мне нужно создать экземпляр, и если я создаю экземпляр, как показано ниже
human:=THuman.Create(); <===== it doesnt give me error
как я полностью скрыть свой anchestor конструктор? , Потому что если я instatiate, как и выше, полностью дать мне неправильный объект
UPDATE: а также я могу видеть по умолчанию Создать без параметра из TObject слишком
У вас слишком много виртуальных конструкторов. У вас должен быть только один из них. –
Вы уверены, что вам нужны виртуальные конструкторы? Вы когда-нибудь создавали экземпляр любого из этих классов, не зная тип во время компиляции? Если нет, то вам не нужны виртуальные конструкторы. –
Трудно вам посоветовать здесь, потому что мы не знаем, что заставляет вас иметь так много перегруженных и виртуальных конструкторов. На первый взгляд пахнет вся ваша конструкция. Мои инстинкты в том, что исправление дизайна решит проблемы. Попытка скрыть конструкторов сродни тому, чтобы надеть нос для одежды. Дизайн все еще пахнет, вы просто не сможете его запах. –