gpt4 book ai didi

delphi - 我可以在抽象基类中保存任何数据成员吗?

转载 作者:行者123 更新时间:2023-12-03 15:38:51 24 4
gpt4 key购买 nike

我有一个抽象类:

type
TInterfaceMethod = class abstract
public
destructor Destroy; virtual; abstract;
function GetBasePlan: Word; virtual; abstract;
procedure CountBasePlan; virtual; abstract;
procedure Calculate; virtual; abstract;
procedure PrepareForWork; virtual; abstract;
end;

和派生类:

type
TFogelMethod = class(TInterfaceMethod)
private
matrix: TFogelMatrix;
BasePlan: Word;
public
constructor Create(var matr: TFogelMatrix);
procedure Calculate;
function GetBasePlan: Word;
procedure CountBasePlan;
procedure PrepareForWork;
destructor Destroy;
end;

问题是,我可以将 GetBasePlan 和 CountBasePlan 方法的实现放入基类中,使它们仅是虚拟的(而不是像现在一样抽象),并将成员 BasePlan 放在那里吗?那么,我可以这样做吗:

type
TInterfaceMethod = class abstract
private
BasePlan: Word;
public
destructor Destroy; virtual; abstract;
function GetBasePlan: Word; virtual;
procedure CountBasePlan; virtual;
procedure Calculate; virtual; abstract;
procedure PrepareForWork; virtual; abstract;
end;

如果我能做到,从面向对象设计的角度来看会好吗?我怎样才能从派生类中准确地访问这个成员?

最佳答案

是的,你可以。抽象类就是类,它们可以有实现。

通过将abstract关键字添加到类中,可以禁止该类被实例化。它不需要任何抽象方法。

可以实例化具有抽象方法的类,但这会导致编译时出现警告,并且在调用该方法时会出现异常。

接口(interface)没有实现,它们必须由类实现(顺便说一下,类可以是抽象的)。

关于delphi - 我可以在抽象基类中保存任何数据成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/329414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com