您的位置:首页 > 编程语言 > Delphi

理解 Delphi 的类(十一) - 深入类中的方法[6] - 类中的方法重载

2008-01-16 19:53 656 查看
//类中的方法重载首先具备前面说过的重载相关的所有特点, 如:
TMyClass = class(TObject)
function Fun(s: string): string; overload;
function Fun(i: Integer): Integer; overload;
function Fun(x,y: Integer): string; overload;
end;

//但如果是重载父类中的方法, 如果父类中被重载的方法在本类中没有重载的话, 可以省略 overload 指示字
TBass = class(TObject)
function Fun(s: string): string; {这里省略了 overload, 当然也可以不省略}
end;

TChild = class(TBass)
function Fun(i: Integer): Integer; overload;
end;

{这个很好理解, 父类并不知道哪个子类要重载它的哪个方法}

//published 区中的方法命名要有唯一性, 该区域中的方法不能重载!

{这样是不可以的}
TMyClass = class(TObject)
published
function Fun(s: string): string; overload;
function Fun(i: Integer): Integer; overload;
end;

//这就有一个问题:  公共区域, 在默认情况下是归属于 published 区的, 为什么公共区域的函数可以重载?

{
编译器会把公共区域中的重载函数自动归类到 public 区, 也可能会给 published 区一个;
这是我猜的, 没有资料可以参考.

关于这个问题, 我又搞了一个实验:
}
//在自动生成的 TForm1 类的公共区域添加重载方法:
type
TForm1 = class(TForm)
procedure alert(s: string); overload;     {No.1}
procedure alert(s1,s2: string); overload; {No.2}
private
{ Private declarations }
public
{ Public declarations }
end;

//执行编译后, 只会留下第一个:
type
TForm1 = class(TForm)
procedure alert(s: string); overload;       {No.1}
private
{ Private declarations }
public
{ Public declarations }
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐