请教几个简单的问题(9分)

  • 主题发起人 主题发起人 nc2t
  • 开始时间 开始时间
N

nc2t

Unregistered / Unconfirmed
GUEST, unregistred user!
我自定义一个MPanel
其中继承的Create中是inherited;
但是我看别人写的却是Inherited Create(owner);
请问这两种写法有什么区别?
 
有什么啊 都是继承父类的方法,属性等
 
肯定有区别
我写过一个控件,使用Inherited就不行,但是Inherited Create(owner);就行
 
在消息处理过程中可以调用inherited来把消息传递给祖先类的消息处理过程,而在
WndProc()、DefaultHandler()中调用inherited时,需要后跟一个过程的名称:
inherited wndproc(Msg);
 
To: czcn
你说的很有道理,我刚开始的时候就是用到
WndProc()用Inherited不行,后来在后面加了一个Create(Owner);就可以了
你能说的更详细点吗?
 
哦!学习学习!。。。
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

TFirst = class
public
procedure ShowMe; overload;
procedure ShowMe(WhatName :String); overload;
end;

TSecond = class(TFirst)
private
procedure ShowMe;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TSecond }

procedure TSecond.ShowMe;
begin
inherited; //调用TFirst.ShowMe();
inherited ShowMe('inherited ShowMe(参数)'); //调用TFirst.ShowMe(WhatName :String);
end;

{ TFirst }

procedure TFirst.ShowMe;
begin
ShowMe('');
end;

procedure TFirst.ShowMe(WhatName: String);
begin
ShowMessage(WhatName);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
TempObj: TSecond;
begin
TempObj := TSecond.Create;
try
TempObj.ShowMe;
finally
FreeandNil(TempObj);
end;
end;

end.
 
to wangler

你能不能详细地解释一下你的程序,谢谢了
 
iherited 关键字 可以理解为是超类的引用。self 是对象本身的引用。
我们可以用 Self.成员 的方式调用对象本身的属性或方式。
Inherited 的调用方式为 Inherited 成员。 其中成员可以是在子类中可以访问超类的方法或者其他成员。
如果调用方式为 inherited 。则只能调用超类中与 inherited 语句所在的方法同名,同参数的超类方法。他只不过一种 《Inherited 成员》对调用方式的省略形式。
 
后退
顶部