overload是函数重载的关键字 比如 function Max(a, b:integer):integer;overload; function Max(a, b :Byte):Byte;overload;override是派生类改写基类虚函数的关键字,比如: //在基类中声明的 function Max(a, b :integer):integer;virtual;//在派生类中改写 function Max(a, b :integer):integer;override;
overload and override体现了多态, overload 相当于C++中的重载,即在编译期,通过‘参数’实现静态多态。 Override 用于派生类对父类方法的继承,类似于C++中的虚拟函数的概念。 在父类中声明为Virtual的方法,在派生类中有不同实现时可以用Override, 另外在实现中可以用Inherited来保留父类中的功能。可以说Override是用于 表现对象的多态性的。与Dynamic声明一样,都是动态绑定的方法。 举个例子: type classa = class public function aaa:integer; virtual; //function1 end; classb = class(classa) function aaa:integer; override; //function2 end; var c1: classa; i: integer; begin c1 := classb.create; i := c1.aaa; edit1.text := inttostr(i); end; 注意到,上例中c1.aaa调用的是function2,如果没有override则是调用的function1。
override 覆盖
比如
function Max(a, b:integer):integer;overload;
function Max(a, b :Byte):Byte;overload;override是派生类改写基类虚函数的关键字,比如:
//在基类中声明的
function Max(a, b :integer):integer;virtual;//在派生类中改写
function Max(a, b :integer):integer;override;
overload 相当于C++中的重载,即在编译期,通过‘参数’实现静态多态。
Override 用于派生类对父类方法的继承,类似于C++中的虚拟函数的概念。
在父类中声明为Virtual的方法,在派生类中有不同实现时可以用Override,
另外在实现中可以用Inherited来保留父类中的功能。可以说Override是用于
表现对象的多态性的。与Dynamic声明一样,都是动态绑定的方法。
举个例子:
type
classa = class
public
function aaa:integer; virtual; //function1
end; classb = class(classa)
function aaa:integer; override; //function2
end; var
c1: classa;
i: integer;
begin
c1 := classb.create;
i := c1.aaa;
edit1.text := inttostr(i);
end; 注意到,上例中c1.aaa调用的是function2,如果没有override则是调用的function1。
如
alist=class(tlist)
published
procedure free;overload;该用overload 还是override;
end;begin
....
inherited free;
end;按上面回答的应该是用override,可是我用overload时也好好。