关于override,inherid,搞不懂什么意思,作什么用的
解决方案 »
- lea内嵌汇编问题
- 请教如何将鼠标形变成一个红色的圆点?不要用载入cur之类的方式,要在程序中动态画出这个鼠标形状。
- 两点了,我睡不着! 是数学还是习题? 想听听大家的意见
- Delphi7里如何用crystal10打印当前页?
- 实现1+1=2怎么这么难,初学者求助
- 大家能介绍一下用serversocket实现一对多通讯时如何区分各个数据包的来源?
- 利用database desktop建立表,怎样从一个记录进入另一个记录的编辑状态,谢谢!在线等待!
- 请问 我想让焦点离开控件(如下拉框)时 让控件变成另一种颜色 该如何改控件??
- Erp的全称是什么?
- 读取OleVariant参数内容,报错!
- delphi7问题
- 感谢各位网友昨天给我发的DEs算法,以及对帖子的关注,UP,但我还是没有搞到Triple Des的Delphi源码跟Demo,只好再次向兄弟们求助了!
inherid 继承
并且需要重写Create方法.
现在在Create方法中,首先要Inherited Create(Aowner).因为毕竟你的代码中只是做了一下你自己使用变量的初始化工作,其它大量的工作要VCL代你做.
而如果你不将自己的Create方法override一下的话,如果需要将一个TMyEdit元件和其它元件一齐放入一个元件数组的话,Create调用将使用TcustomEdit的Create方法.通过override,你告诉系统,如果需要Create的话,就用我的.
override 重载 // 简单地说就是子类方法重新改写父类方法
inherited 继承 // 简单地说就是子类方法直接引用父类方法procedure yourproc(params: yourtype);override;//声明子类方法时加上override,表示子类将重载父类的方法
procedure yourproc(params: yourtype);
begin
inherited; // 实现子类方法时加上inherited,表示子类直接继承父类的方法,如果是构造函数,inherited应写在子类方法的开始,析构函数则在结尾
...
end;
并且需要重写Create方法.
现在在Create方法中,首先要Inherited Create(Aowner).因为毕竟你的代码中只是做了一下你自己使用变量的初始化工作,其它大量的工作要VCL代你做.
而如果你不将自己的Create方法override一下的话,如果需要将一个TMyEdit元件和其它元件一齐放入一个元件数组的话,Create调用将使用TcustomEdit的Create方法.通过override,你告诉系统,如果需要Create的话,就用我的.
inheride 是基于父类的继承 见 qybao(阿宝) (
type
TClass1=Class
private
protected
varStr:string;
procedure Method001;dynamic
public
constructure Create;
end;
方法的实现如下:
TClass1.Create;
begin
varStr:='this is the first class create method.';
end;
TClass1.Method001;
begin
///
end; TClass1.Method002;
begin
///
end;
而现在由于需要你要创建一个新的类,而却要拥有TClass1的所有可以继承的方法。那么构建后如下:
type
TClass1=Class
private
varStr:string;
protected
procedure Method001;override;
public
constructure Create;
end;
方法的实现如下:
TClass2.Create;
begin
inherited Create;{注意了,在这儿如果你想让在对象创建时仍然使 varStr保持父类的值'this is the first class create method.'那么此处久的使用inherited关键字调用Create构造器的时候调用父类的构造器方法实现的内容。反之则不。}
end;
TClass2.Method001;
begin
Inherited Method001;{合上述一样}
end; TClass2.Method002;
begin
///
end;