作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是好奇,我可以像 Java 风格一样在 Delphi 中构造一个抽象类吗?
Java声明:
public abstract class Foo {
public abstract void test();
}
使用方法:
public void testCsontruct() {
Foo clsfoo = new Foo(){
public void test(){
//....do something here
}
};
}
德尔福声明:
Tfoo = class
public
procedure test; virtual; abstract;
end;
使用方法:
procedure testUse;
var
foo:Tfoo;
begin
foo:=Tfoo.Create; //can we implement the test method here ? how?
end;
最佳答案
该 Java 功能是匿名类。它们在许多场景中都很有用。与您所说明的一样,它们通常用于捕获封闭范围内的变量。
Delphi 中没有类似的语法。匿名方法很接近,但是没有语法允许您用匿名方法替换实例化对象的虚拟方法。
您需要子类化以提供虚拟方法的具体实现。您可以在编译时以通常的方式进行子类化,或者在运行时使用虚拟方法拦截器或一些类似的 VMT 技巧进行子类化。
关于java - 德尔福: Constructing Abstract Class like Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522065/
我是一名优秀的程序员,十分优秀!