Ta = class of Tb

xiaoyao800 2003-08-22 10:18:50
这行代码什么意思 :Ta = class of Tb
类 Ta 跟 类 Tb 是什么关系?
...全文
35 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huojiehai 2003-10-11
  • 打赏
  • 举报
回复
类的类 类型,使用好处,可以简单化代码,如一个主窗口中可能有很多菜单都是打开窗口中定义一个函数procedure Test2(A: TFormClass),每一个Click中哪要打开的窗口的类去调用就行了如:
procedure TForm1.Button1Click(Sender: TObject);
begin
Test2(TForm1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Test2(TForm);
end;
如果不这样可能就需要写很多 Test2中实现在大体一样的代码


unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

{$R *.dfm}

type
TFormClass = class of TForm;

procedure Test2(A: TFormClass);
var
aa: TForm;
begin
aa := a.Create(Application);
try
aa.ShowModal;
finally
aa.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Test2(TForm1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Test2(TForm);
end;

end.
4water 2003-10-11
  • 打赏
  • 举报
回复
为什么要调用 类的“类方法”?
nyf1220 2003-10-11
  • 打赏
  • 举报
回复
这是“类之类”,也就是所谓的类引用,
类之类可以直接调用类的“类方法”
ghostmaster 2003-10-11
  • 打赏
  • 举报
回复
up~~
4water 2003-10-11
  • 打赏
  • 举报
回复
FrameSniper 2003-10-11
  • 打赏
  • 举报
回复
To 4Water

类方法针对的操作对象是当前类的所有实例,除此以外,类方法还可以直接针对类的相关信息进行操作,例如ClassName等。可以通过这些方法获取类的信息(与RTTI有部分关系)。

类方法可以通过类名称或对象名称进行调用
FrameSniper 2003-10-11
  • 打赏
  • 举报
回复
To HuoJieHai

个人感觉你上面这个说法似乎有问题哦!
首先类引用类型的主要目的并不是为了简化代码!类引用类型好一个记录指针,如果你把类理解成记录,那么指向这个记录的指针就好比我们这里提到的类引用类型。我们知道,定义记录指针是为了加快访问速度,同样,通过类引用类型来对类的内容进行访问也可以提高速度!而不是简单的简化代码。

至于你上面举的这个例子,我有点疑惑:你的Test2使用的形参A我感觉没有任何用处!而且即使使用了这个形参,个人感觉使用这种方式来简化多个界面元素动态调用同一窗体的问题似乎也有点牵强了!
movingboy2 2003-08-22
  • 打赏
  • 举报
回复
通常当你需要一个类型,而不是一个实例的时候可以这样用。例如:
TFormClass = class of TForm;

procedure Test1(A: TForm);
procedure Test2(A: TFormClass);

Test1的参数A需要一个TForm的实例
Test2的参数A需要一个TForm的类型

什么类型才是TForm类型呢?
包括TForm本身及TForm的所有派生类
这在实现抽象的时候很有用
yoisyois 2003-08-22
  • 打赏
  • 举报
回复
不好意思,错了,
Ta声明为Tb的类引用,就是类之类
yoisyois 2003-08-22
  • 打赏
  • 举报
回复
不好意思,错了,
Ta声明为Tb的类引用,就是类之类
yoisyois 2003-08-22
  • 打赏
  • 举报
回复
Ta是Tb的子类,

或者

从Tb继承得到新的派生类Ta

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧