There are many ways to declare a new class type:
TMyClass1 = TObject;
TMyClass2 = type TObject;
TMyClass3 = class end;
TMyClass4 = class(TObject);
TMyClass5 = class(TObject) end;
It's my understanding that class 3, 4 and 5 are descendants of TObject
, but it's not clear how 1 and 2 differ, and what the differences between 3,4 and 5 are.
Are there any differences?
TMyClass1
is just an alias - a different name for TObject
TMyClass2
is a strongly typed alias for TObject
(we call them "type'd types"); it's very unusual to use this with classes, though, normally you'd use this with e.g. Pointer
to create a handle type or something (see e.g. how this is used in Windows.pas).TMyClass3
is a class, implicitly descending from TObject
, with no new members.TMyClass4
is a class, explicitly descending from TObject
, with no new members, using the concise syntax. More normally, this is used for marker classes, where the uniqueness of the class itself is the interesting thing - often used for Exception
descendantsTMyClass5
is a class, explicitly descending from TObject
, with no new members. The TObject
in the declaration is redundant, but it doesn't harm anything to make it explicit.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With