类方法的Virtual,有什么具体的运用

justoday justoday 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
unit Unit1;

interface

type

TClassA = class

protected
class var
F1 : Integer;
F2 : integer;

class Procedure Proce1; virtual; abstract;
class Procedure Proce2; virtual; abstract;
public
class constructor ClassCreate;
end;

TClassB = class(TClassA)
protected
class Procedure Proce1; override;
class Procedure Proce2; override;
end;

implementation



{ TClassA }

class constructor TClassA.ClassCreate;
begin


Proce1; // Proce1 是 virtual; abstract; 本意是想调用子类的实现
Proce2; // Proce2 是 virtual; abstract; 本意是想调用子类的实现

end;

{ TClassAA }

class procedure TClassB.Proce1;
begin
F1 := 10;
end;

class procedure TClassB.Proce2;
begin
F2 := 100 div F1
end;
end.
{
结果是运行出错,根本不会去调用TClassB 对应的过程,
只会调用TClassA 的对应过程,面TClassA里这两个方法都是abstract

因为 Proce1 必须先于Proce2 调用,
所以用类似模板方法的思想实现,在父类里因定好调用顺序,子类里具体实现


类方法的Virtual,有什么意义,有什么具体的运用。
}

...全文

相关推荐

评论 14
收藏 已收藏
分享
返回顶部