【发布时间】:2018-07-02 13:48:28
【问题描述】:
我有一个子类 TChildClass,它继承自 TBaseClass。 TBaseClass 有一个方法 function foo: string;,TChildClass 必须始终实现!
IMyInterface = Interface(IInterface)
function foo: string;
end;
TBaseClass = class(TInterfacedObject, IMyInterface)
public
function foo: string;
end;
TChildClass = class(TBaseClass , IMyInterface)
public
function foo: string;
end;
我希望TChildClass 始终实现function foo 并调用从TBaseClass 继承:
function TBaseClass.foo: string
begin
Result := 'Hello';
end;
function TChildClass.foo: string
begin
Result := inherited;
Result := Result + ' world!';
end;
如何制作?
【问题讨论】:
-
你无法让编译器检查每一个编程错误。如果可以,那么您将不需要程序员。这种要求应该由您的测试强制执行。你有测试对吗?
-
你可以将
foo抽象化(即virtual; abstract;)。这样,如果您没有在后代中实现 (override;) 并实例化该后代的变量,您应该会收到警告。但是,foo 不能在基类中有实现。
标签: delphi