我正在使用一个具有许多抽象类的组件套件。现在我想应用多态性,但在创建对象时收到错误抽象类。
即使我不需要,我是否应该重写所有虚拟方法?有什么解决方法或解决方案吗?
为了创建类的实例,您需要重写所有声明为虚拟抽象的方法。即使您不使用它们。
如果您确实想要解决方法,可以使用空方法。但我不会推荐这样做。
并添加有关该主题的更多信息:
如果一个方法是用虚拟抽象声明的,那么该方法就是抽象的:
procedure MyMethod(const AMyParameter: Integer); virtual; abstract;
琐事:您甚至可以将方法重写为抽象方法:
procedure MyMethod(const AMyParameter: Integer); override; abstract;
您需要重写这些方法才能从该类实例化。
你可以将整个类声明为抽象类:
type
TMyClass = class abstract (TMyAncestor)
end;
如果您尝试实例化该类,您会收到警告。
对应的是一个密封类:
type
TMyClass = class sealed (TMyAncestor)
end;
如果您尝试从该类继承,您会收到警告。
您还可以密封方法,但需要关键字final。
procedure MyMethod(const AMyParameter: Integer); override; final;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)