gpt4 book ai didi

Delphi从不同的类级别调用函数

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

如何从各个父类调用函数,函数的名称应与父类中的名称相同。

在Java中有super关键字,在C#中有base 。 Delphi 中的等效项是什么?

type 
MyParentClass = class
function Dosomething: Integer;
end;

MyChildClass = class(MyParentClass)
function DoSomething: Integer;
end;

MyGrandChildClass = class(MyChildClass)
function DoSomething: Integer;
end;


function MyParentClass.Dosomething : Integer;
begin
result := 5;
end;


function MyChildClass.Dosomething : Integer;
begin
result := Dosomething + 15 ; // result should be 20 !
end;


function MyGrandChildClass.Dosomething : Integer;
begin
result := Dosomething + 40 ; // result should be 60 .....
end;

最佳答案

使用inherited关键字:

function MyChildClass.DoSomething : Integer;
begin
result := inherited DoSomething + 15 ;
end;

请访问 documentation 了解此关键字.

如果您希望在继承链上进一步挑选一个类,那么您必须明确命名它。例如:

function MyGrandChildClass.DoSomething : Integer;
begin
result := MyParentClass(Self).DoSomething + 15 ;
end;

但请注意,所有这些都是非常强烈的代码味道。在每个派生类中,您都隐藏了同名的方法。通常这应该使用虚拟方法来完成。

关于Delphi从不同的类级别调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41848432/

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