我有一个问题,哪种类型适用于所有具有静态类型和某种 OOP 的语言。
如果我有一个类 A,一个是 A 的子类的类 B,一个是 B 的子类的类 C 和一个类型 A 的变量,我也可以在其中存储 B 和 C 的实例吗?
最佳答案
在 Delphi 中,答案是肯定的。
例如,我创建了一个语法高亮文本编辑器组件。该组件具有属性 FormattingProcessor
, 类型为 TFormattingProcessor
.现在,我已经创建了几个格式化处理器,例如TXMLFormattingProcessor
, TPascalFormattingProcessor
, 和 TINIFormattingProcessor
,每个类(class)都是 TFormattingProcessor
的 child .这些中的任何一个都可以分配给 FormattingProcessor
文本编辑器组件的属性。
即声明为TFormattingProcessor
的变量可以分配一个 TXMLFormattingProcessor
类型的值, TPascalFormattingProcessor
, 或 TINIFormattingProcessor
,例如。
如果环顾 VCL,您会发现这种类型的赋值实际上很常见。例如,TLabel
组件有一个 FocusControl
属性,类型为 TWinControl
(如果我没记错的话)。您可以指定 TWinControl
的任何后代此属性,例如一个TEdit
. (FocusControl是当标签的加速字符与Alt键一起输入时,将获得键盘焦点的控件。)
关于c++ - 子类的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651369/