子类的类型

0 c++ delphi oop

我有一个问题哪种适用于所有语言的静态类型和某种OOP.

如果我有A类,B类是A的子类,C类是B的子类和A类变量,我可以在其中存储B和C的实例吗?

And*_*and 6

在Delphi中,答案是肯定的.

例如,我创建了一个语法高亮的文本编辑器组件.该组件具有属性FormattingProcessor,属性类型TFormattingProcessor.现在,我已经创建了几个格式的处理器,例如TXMLFormattingProcessor,TPascalFormattingProcessorTINIFormattingProcessor,每一类可的孩子TFormattingProcessor.可以将其中任何一个分配给FormattingProcessor文本编辑器组件的属性.

即,变量声明为TFormattingProcessor可assinged的类型的值TXMLFormattingProcessor,TPascalFormattingProcessor或者TINIFormattingProcessor,例如.

如果您在VCL中查看,您会发现这种类型的分配实际上很常见.例如,TLabel组件具有FocusControl属性,属性类型TWinControl(如果我没记错的话).您可以TWinControl为此属性分配任何后代,例如a TEdit.(FocusControl是当标签的加速器字符与Alt键一起输入时将获得键盘焦点的控件.)