oop - 是否有与 Java 接口(“类...实现”)等效的 Delphi?
问题描述
假设我有两个类“ mycheckbox ”和“ mymemo ”分别派生自TCheckBox
和TMemo
。我想为两者都创建一个名为“ isdone ”的方法,该方法检查组件是否已完成。有没有一种方法可以在不知道正在处理的两个类中的哪一个的情况下通用地访问该方法?
在Java中它将是:class mycheckbox implements MyInterface
解决方案
在 Delphi 中,您将使用通用接口,就像在 Java 中一样,例如:
type
IMyInterface = interface
['{bfa4fffc-b87e-49ce-8aa9-4911e106959c}']
function IsDone: Boolean;
end;
MyCheckBox = class(TCheckBox, IMyInterface)
public
function IsDone: Boolean;
end;
MyMemo = class(TMemo, IMyInterface)
public
function IsDone: Boolean;
end;
function MyCheckBox.IsDone: Boolean;
begin
Result := ...;
end;
function MyMemo.IsDone: Boolean;
begin
Result := ...;
end;
procedure DoSomething(Intf: IMyInterface);
begin
...
if Intf.IsDone then...
...
end;
推荐阅读
- reactjs - 引入 typescript 后,带有 express server.js 的 CRA 中断
- amazon-dynamodb - 如果我在 DynamoDB 中插入一个字符串,但它的长度超过了 400 KB 的限制,会发生什么情况?
- python - 在循环通过 ncols = len(columns) 的空 pandas 数据帧时动态附加不同长度的列
- postgresql - 如何从包含数组的postgres json字段中选择包含某些值的所有记录
- javascript - 在 Protractor 中使用 describe 或 it 时使用 function() 和 () 有什么区别
- vega-lite - 有没有一种实用的方法可以在 Vega-Lite 中为文本标记设置背景颜色或光晕?
- reactjs - AWS Amplify Auth 弹出 IFrame
- javascript - 为什么 IndexOf 不匹配整个子字符串?
- c# - .xsd 架构在我的解决方案中未被识别为类
- java - 如何使用 java 在足球统计中获取或排序 java json 数组?