这可能有点愚蠢,甚至在文档中解释过,但我找不到它。
很多 Delphi 类中似乎都重复出现一种模式,即TCustomSomething
在实际之前创建一个TSomething
。我想知道这样做是否有任何特殊原因,如果我想创建派生类,TSomething
我应该从继承TCustomSomething
还是直接从继承TSomething
?
我可以举几个例子:
- 继承
TStringStream
自TByteStream
,继承自 ,TMemoryStream
最终继承TCustomMemoryStream
。 TRESTClient
直接继承自TCustomRESTClient
。TButton
继承自TCustomButtom
。
确实有一些情况我看到了基TCustom...
类的实际好处,比如TMemo
和TRichEdit
,但我不明白为什么TRichEdit
从继承TCustomRichEdit
而不是直接从继承TCustomMemo
。
TL;DR:Delphi 中的类有什么用TCustomFoo
?扩展现有类时我应该继承TCustomFoo
还是TFoo
直接从现有类继承?
您可以从其中任一个继承,但是您经常会发现,除了将受保护的属性公开或发布,和/或将公共属性变为已发布属性之外
TFoo
,该类没有向该类添加任何功能TCustomFoo
。您可能希望自己的
TAraujoFoo
组件不具有所有公共/已发布的属性,在这种情况下,您可以继承自TCustomFoo
而不是TFoo
,然后仅将您想要的属性公开/发布TAraujoFoo
。