两个函数同名但参数不同时使用overload以使系统承认它们是合法的。
而override只用于类方法中,当子类继承了父类的同名同参数方法时使用
override.(当然父类的方法必须有virtual说明)。如果在写子类方法中不用
override说明,则在把子类对象作为父类类型调用时就会调用父类的方法而不是
你想要的子类的方法,举个例子
type
classa = class
public
function aaa:integer
virtual
//function 1
...
end;
classb = class(classa)
...
function aaa:integer
override
//function 2
end;
...
var
c1: classa;
i: integer;
begin
c1 := classb.create;
i := c1.aaa;
edit1.text := inttostr(i);
end;
注意到,上例中c1.aaa调用的是function 2,如果没有override则是
调用的function 1.