在
this问题中,您看到可以创建添加抽象keywrod的抽象类.我正在Delphi中翻译一个项目,但我发现它允许创建一个抽象类.这是代码:
type TCableSPF = class abstract //code end;
这是一个抽象类,当然我有很多实现它的子类.顺便说一句,我看到可以创建一个这样的实例;
a := TCableSPF.Create;
当我尝试调用其虚拟和抽象的方法时,我得到了错误,这是可以的,但我可以阻止创建类吗?或者Delphi默认允许这个?谢谢您的帮助
解决方法
类摘要是Delphi对.Net日的延续.
由于未知原因,此关键字后面没有(当前)实现.
由于未知原因,此关键字后面没有(当前)实现.
如果要阻止抽象类的实例化,此关键字将无济于事.而是执行以下操作:
type TCableSPF = class abstract //code strict protected //Define all constructors for an abstract class as protected. constructor Create; virtual; reintroduce; end;
通过将所有构造函数定义为protected,只有后代对象可以访问构造函数,其他代码无法访问构造函数.
因为您重新引入了虚拟构造函数,所以您也无法使用以下方法对其进行实例化:
unit A; type TMyAbstractObject = class abstract(TObjectX) strict protected constructor Create; virtual; reintroduce; end; ... unit B; TMyClass = class of TObjectX; AbstractObjectInstance = TMyClass.Create; //Will not work for TMyAbstractObject
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。