这是NiceErp上的一个基类函数,请问是什么意思 ( 积分: 100 )

  • 主题发起人 主题发起人 piaoping
  • 开始时间 开始时间
P

piaoping

Unregistered / Unconfirmed
GUEST, unregistred user!
type<br>&nbsp;&nbsp;{1&nbsp;TWSEditForm&nbsp;是所有编辑窗体的基础类&nbsp;}<br>&nbsp;&nbsp;TWSEditForm&nbsp;=&nbsp;class&nbsp;(TWSCustomForm)<br>&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;Enter(const&nbsp;Params:&nbsp;Variant):&nbsp;Boolean;&nbsp;overload;&nbsp;virtual;&nbsp;abstract;<br>&nbsp;&nbsp;end;<br><br>implementation<br><br><br>function&nbsp;TWSEditForm.Enter:&nbsp;Boolean;<br>begin<br>&nbsp;&nbsp;Result&nbsp;:=&nbsp;Enter(Null);<br>end;<br>我不明白&nbsp;Result&nbsp;:=&nbsp;Enter(Null);这句返回是什么东东?
 
那你去看看TWSCustomForm.Enter返回的是什么啊
 
这套系统,很差劲的.
 
首先,这个函数编译不会通过:<br>function&nbsp;TWSEditForm.Enter:&nbsp;Boolean;<br>begin<br>&nbsp;&nbsp;Result&nbsp;:=&nbsp;Enter(Null);<br>end;<br>因为这是个虚方法(abstract,看前面声明)。不需要实现,只需要声明。<br><br>其次,如果abtract改为Override也不至于调用Enter(Null);会产生抽象错误。
 
完整的代码是<br>unit&nbsp;WSEdit;<br><br>interface<br><br>uses<br>&nbsp;&nbsp;Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Variants,&nbsp;Classes,&nbsp;Graphics,&nbsp;Controls,&nbsp;Forms,<br>&nbsp;&nbsp;Dialogs,&nbsp;WSCstFrm;<br><br>type<br>&nbsp;&nbsp;{1&nbsp;TWSEditForm&nbsp;是所有编辑窗体的基础类&nbsp;}<br>&nbsp;&nbsp;TWSEditForm&nbsp;=&nbsp;class&nbsp;(TWSCustomForm)<br>&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;Edit(const&nbsp;Params:&nbsp;Variant):&nbsp;Boolean;&nbsp;virtual;&nbsp;abstract;<br>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;Enter:&nbsp;Boolean;&nbsp;overload;&nbsp;virtual;<br>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;Enter(const&nbsp;Params:&nbsp;Variant):&nbsp;Boolean;&nbsp;overload;&nbsp;virtual;&nbsp;abstract;<br>&nbsp;&nbsp;end;<br><br>implementation<br><br><br>{$R&nbsp;*.dfm}<br><br>{1&nbsp;&nbsp;}<br>{<br>*********************************&nbsp;TWSEditForm&nbsp;**********************************<br>}<br>function&nbsp;TWSEditForm.Enter:&nbsp;Boolean;<br>begin<br>&nbsp;&nbsp;Result&nbsp;:=&nbsp;Enter(Null);<br>end;<br><br>end.<br>我不明白的是函数&nbsp;Edit只声明没有实体,而函数&nbsp;Enter声明了两次,还有这个函数&nbsp;Enter的作用是什么?
 
&gt;&gt;Edit只声明没有实体<br>Edit方法是abstract(抽象)方法,无需实现,它由它的子类去实现。<br><br>&gt;&gt;而函数&nbsp;Enter声明了两次<br>Enter是overload的方法,可以申明两次(以上)。<br><br>两个Enter,一个是抽象方法,它也是由它的子类去实现,而有实现的Enter只是抽象Enter方法的一个默认调用入口。<br><br>代码本身没有什么问题。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
643
import
I
I
回复
0
查看
847
import
I
后退
顶部