gpt4 book ai didi

delphi - Delphi中的抽象

转载 作者:行者123 更新时间:2023-12-03 19:01:44 25 4
gpt4 key购买 nike

如果我有子类,则子类会继承父类的所有方法,但是如何在父类中使用子类的函数呢?那是抽象吗?我该如何完成?

我的代码:

type
cParent = class(TObject)
private
function ParentFunction:byte;
function ChildFunction:byte;virtual;abstract;
end;

type
cChild = class(cParent)
private function ChildFunction:byte;override;
end;

function cChild.ChildFunction:byte;
begin
Exit(20);
end;

function cParent.ParentFunction:byte;
begin
Exit(10);
end;

var
c:cParent;

begin
c:= cParent.Create;
WriteLn(c.ChildFunction);
Readln;
end.


它编译文件,但是我得到抽象异常。

最佳答案

c:= cParent.Create;
WriteLn(c.ChildFunction);


您在此处创建cParent类的实例。此类仅包含一个抽象的ChildFunction,可以被其他类覆盖。该函数未在cParent中实现,因此会出现抽象错误。

如果您改用cChild类(在其中实现了ChildFunction),则此代码有效:

c:= cChild.Create;
WriteLn(c.ChildFunction);


为了澄清起见,请想象一个名为 GeometricObject的父类和一个虚拟抽象方法 CalculateVolume。现在,您可以使用球体/盒子的公式来创建实现 SphereObject的子类,例如 BoxObjectCalculateVolume。但是创建 GeometricObject的实例并调用 CalculateVolume没有任何意义。

关于delphi - Delphi中的抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130657/

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