overload ※ override ?不懂(100分)

  • 主题发起人 主题发起人 shenger
  • 开始时间 开始时间
S

shenger

Unregistered / Unconfirmed
GUEST, unregistred user!
我买了本烂书,overload override 书上都叫重载,肯定不一样的,我搞不清了,求助。
 
overload用于多态情况,如下:
procedure Show_Message(msg: pChar)
overload;
procedure Show_Message(msg: pChar
Caption: pChar)
overload;
procedure Show_Message(msg: pChar
Caption: pChar
Flag: Integer)
overload;

override用于重载父的属性。
父:
procedure Show_Message(msg:pChar);virtual;
子:
procedure Show_Message(msg:pChar);override;
 
override主要用于继承树当中的同名的元素(过程、函数、属性、事件)
的有效性区分,如果一个类override了父类的元素,那么父类的同名元素
将失效。overload用于同一作用域中的同名函数标志符的有效性区分,
在同一作用域中,可以有多个过程或函数拥有同样的名字,但有不同的
参数表或者返回值。至于具体采用哪个函数由调用的实际情况决定。
它们的不同主要在于,override是上下级的,而overload是平级的
 
覆盖,重载
 
按照我自己的通俗理解:
1.overload是“重载”,就是有一个函数或方法名程,但是他可以带不同的参数(可没有),
就象2楼的举的例子一样!在面向对象的编程中,overload比较经典的用法是在构造函数中,
如C++ 和Java中,可以用不同的参数生成不同的实例!
通俗的讲,overload:就象有一个人,他有多种技能,可以完成不同的工作,他的负载比较重,所以“重(zhong)载”!

2.override是“重置”,用在子类继承父类中!
子类中的方法和父类中的名称参数一样,这样就把父类中的方法“重新改置”!
override把父类的方法“委屈”了,即同名的方法在子类中有自己的功能(也许功能有所改变或变得更强大),所以说“重(chong)置”!
[:D]
 
overload是多啦,

override是换啦,各位,对吗
 
那子类中的Create方法与父类的Create方法参数不一样时,就是Overload咯?
 
多人接受答案了。
 
后退
顶部