Zitat von
Phoenix:
Als Ergänzung zu Michaels Antwort: ...
Aber wie geht das dann mit den virtuellen Konstruktoren?
Die werden ja oftmals auch von der Klasse aus aufgerufen und nicht über ein Objekt.
Ein Konstruktor ist im weitesten Sinne doch auch "nur" eine Klassenfunktion.
[edit]
getestet
Delphi-Quellcode:
type
TMyList =
class
class function Test:
String;
virtual;
abstract;
end;
TMyListA =
class(TMyList)
class function Test:
String;
override;
end;
TMyListB =
class(TMyList)
class function Test:
String;
override;
end;
TMyListClass =
class of TMyList;
class function TMyListA.Test:
String;
begin
Result := '
ich bin TMyListA';
end;
class function TMyListB.Test:
String;
begin
Result := '
ich bin TMyListB';
end;
procedure TForm2.FormCreate(Sender: TObject);
var x: TMyListClass;
begin
Memo1.Lines.Add(TMyListA.Test);
Memo1.Lines.Add(TMyListB.Test);
try
Memo1.Lines.Add(TMyList.Test);
except
on E:
Exception do
Memo1.Lines.Add(E.
Message);
end;
x := TMyListB;
Memo1.Lines.Add(x.Test);
end;
Code:
ich bin TMyListA
ich bin TMyListB
Abstrakter Fehler
ich bin TMyListB