解决方案 »
- 请教一下 indy10 文件分包传送
- Delphi读取Excel2003表格
- Image.canvas.textout的文字如何让背景透明
- 求助:我完成一件事需要两个过程,可是一个执行成功了,另一个没有成功,我希望如果第二个没有成功的话,那就第一个又不成功,这要怎么做
- 做了个小游戏,是关于24点的益智游戏,大家评评看!up有分!
- 控件中的 可重栽的事件是?
- 毕业设计上的一个函数,急,help
- 急!有关延时的问题(给高分)
- rxrichedit怎么控制光标到行末
- chechy进来,问2个问题.
- 请教DELPHI的容器类和排序查找问题
- 将MSSQL数据到入到 ACCESS中的时候出现路径不对的错误
(我看见佛)
是什么书 可以介绍下吗 现在弄的是懂非懂 诶!!! 我的delphi啊 my god 啊
希望大侠多多谈论哈 分不够可以再加哈
function ClassType: TClass;它就是获取对象的类类型,它的返回类型TClass就是class of TObject。因为所有类都派生自TObject,所以所有对象都可以调用ClassType。比如:procedure TForm1.Button1Click(Sender: TObject);
var
S: TStringList;
C: TClass;
begin
S := TStringList.Create; C := S.ClassType;
ShowMessage(C.ClassName);//对话框会显示出来TStringList,相当于TStringList.ClassName S.Free
end;
而C.ClassName调用的是TObject的类方法ClassName,原型:
class function ClassName: ShortString;
就是说不需要用实例化的对象去调用,直接用类去调用就行了;不过用对象调用也是可以的,因为对象空间也保存了类的VMT地址。
用对象调用形如:S.ClassName
有什么用??? ---可以不创建类实例,通过类名.名字
什么时候用??? --需要频繁调用的时候,而且不需要创建类实例的情况下
Class-reference types are useful when you want to invoke a class method or virtual constructor on a class or object whose actual type is unknown at compile time.
我上次翻译成这样了,应当不对:
类引用类型是有用的,当你想调用一个“类方法”或当你想调用在编译时期实际类型未知的一个类或对象的虚构造器的时候。应当这样:
类引用类型是有用的,当你想调用在编译时期实际类型未知的类或对象的“类方法”或虚构造器的时候。
类引用 : class of 相当于一种类型的类; 不需要创建实例;就可以直接调用;运行时期实际类型未知的类 时;
类的方法 : class function 在实例化前就可以直接调用(不在private区域)
List: TStrings;
i: Integer;
begin
List := TStringList.Create; for i := 0 to 99 do List.Add(IntToStr(i)); Memo1.Lines := List; List.Free;
end;{
TStrings 类中包含了抽象方法, 但这些抽象方法在其子类 TStringList 中都得到了实现;
因此, 我们虽然定义的是 TStrings 类的变量, 却要通过 TStringList 来实现. 这里就有个问题, 我们直接使用 TStringList 不行吗? 为什么还要绕个弯?
我觉得是: 这样才更符合"多态"的思想吧;
仅就本例而言 Memo1.Lines 本身就是 TStrings 类型的, 这样可以避免类型冲突. 举例说明:
}
来自 万一 博客