Kiedy definiujesz konstruktor klasy w klasie bazowej (tj. Ustawiasz pewną statyczną zmienną klasy), czy możliwe jest przesłonięcie tego konstruktora klasy w klasie pochodnej i wywołanie konstruktora z jego hierarchicznego elementu nadrzędnego z odziedziczonym?Czy można zastąpić konstruktor klasy i korzystać z dziedziczenia?
Przykład:
TBaseclass = class(TObject)
public
class constructor ClassCreate; virtual;
end;
TOtherClass = class(TBaseClass)
public
class constructor ClassCreate; override;
end;
**implementation**
class constructor TBaseClass.ClassCreate;
begin
//do some baseclass stuff
end;
class constructor TotherClass.ClassCreate;
begin
inherited;
//do some other stuff
end;
+1 dla "kompilator automatycznie wywołuje do niego połączenia na podstawie klas używanych w programie". Konstruktorzy klasy sprawiają, że inteligentne linkowanie jest bardziej wydajne. (ponieważ inicjowanie powiązanych zmiennych jest uzależnione od użycia klasy) –
Nie, @Marjan. To nie było niewytłumaczalne głosowanie. Było to głosowanie przez kogoś, kto pomylił "konstruktor klasy" z "konstruktorem", a następnie wziął pod uwagę twierdzenie mojego i Davida, że nie mogą być wirtualni i nie mieliby najmniejszego pożytku, gdyby mogli. Ci, którzy mają dość reputacji, mogą zobaczyć odpowiedź "odpierającą", która została później usunięta, ponieważ wskazałem na nieporozumienie w terminologii. Komentarze wyjaśniające głosowanie zostały już usunięte. –
Szczerze mówiąc, faktyczny szczegół odpowiedzi jest zbyt obszerny, po prostu dlatego, że nigdy nie musiałem robić takich rzeczy. Ale Rob, +1, naprawdę jesteś mistrzem wyjaśnienia. –