我知道怎麼使用
为什麼要两个函数(过程)的函数(过程)名一样参数不一样?
我不用一样也可以啊,具体为什麼要用到呢
delphi overload问题
答案:3 悬赏:30
解决时间 2021-03-02 21:24
- 提问者网友:℡她的他i☆
- 2021-03-02 00:30
最佳答案
- 二级知识专家网友:苦柚恕我颓废
- 2021-03-02 01:25
其实效果是一样的,用了overload后程序内部也是把它存储为两个不同的函数指针,目的是方便我们语义上好处理,比如两个数相加,那函数名都可以取一样的,
function add(a ,b:string);overload;
function add(a,b:integer);overload;
如果没有OverLoad功能,你只能写成两个或多个函数名了,strAdd,intAdd了
个人喜好而以,我就不喜欢想取什么函数名,能统一一个就用Overload了。
function add(a ,b:string);overload;
function add(a,b:integer);overload;
如果没有OverLoad功能,你只能写成两个或多个函数名了,strAdd,intAdd了
个人喜好而以,我就不喜欢想取什么函数名,能统一一个就用Overload了。
全部回答
- 1楼网友:情战凌云蔡小葵
- 2021-03-02 03:01
1.方法的重写overriding和重载overloading是java多态性的不同表现。重写overriding是父类与子类之间多态性的一种表现,重载overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(overloading)。overloaded的方法是可以改变返回值的类型。
2. delphi 的函数覆盖(override)与重载(overload)
而delphi 就是用override 关键字来说明函数覆盖的。被覆盖的函数必须是虚(virtual)的,或者是动态(dynamic)的,也就是说该函数在声明时应该包含这两个指示字中的一个,比如:
procedure draw; virtual;
在需要覆盖的时候,只需要在子类中用override 指示字重新声明一下就可以了。
procedure draw; override;
- 2楼网友:风格单纯
- 2021-03-02 01:55
主要的时,实现多态,根据方法传的参数不同,系统自动调用相应的方法。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |