开发者

Differences between class declarations

There are many ways to declare a new class type:

  1. TMyClass1 = TObject;
  2. TMyClass2 = type TObject开发者_如何学编程;
  3. TMyClass3 = class end;
  4. TMyClass4 = class(TObject);
  5. 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 descendants
  • TMyClass5 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.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜