【发布时间】:2009-07-15 10:38:31
【问题描述】:
如果我有子类,子类继承父类的所有方法,但是如何在父类中使用子类的函数呢?这就是抽象吗?如何实现?
我的代码:
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.
它编译文件,但我得到抽象异常。
【问题讨论】:
-
当你说它编译良好时,你真的是说你没有从编译器那里得到警告,告诉你你正在实例化一个抽象类吗?您需要更加努力地消除编译器提示和警告,而不仅仅是错误。
-
关于传统风格的简单介绍。在 Delphi 中,通常在类(和其他类型)名称前加上 T,而不是 c。函数的返回值通常通过将隐式 Result 变量设置为一个值来设置,而不是使用 Exit,即 Result := 10;,而不是 Exit(10);。 Exit 语法是 D2009 才添加的 注意:你也可以使用函数名,而不是结果(ParentFunction := 10;) - 效果是一样的,它是原始的 Pascal 语法