type TTest = class public procedure test();…… TTest.test(); var temp//任何类型的局部变量 begin
temp := ……//对局部变量操作。 otherclassvar := …… 对其他类成员变量操作 end; //外部调用test var testobj: TTest;//声明TTest对象 begin testobj.test; end; 以上程序编译通过并执行。 如果在TTest中定义成员变量,则在test中引用该类的成员变量就报错。为什么呢?应该两次都报错的啊?
类方法 ,其实就是和你写的独立的方法,函数是一样的,只是写成类方法的话可以更明确的知道这些方法是和这个类有关系的,当然你也可以写成没有关系,我觉得它最大的好处就是将独立的函数分类了,只是方便了使用者记忆和分类.如type /自己将一些常用的操作ListView TreeView的方法写成了函数。方便使用。 function ListView_Del function ListView_Find function ListView_Move function TreeView_Del function TreeView_Find function CreateGUIDToStr //得到一个GUID字符串 这样的写法将一些功能完全不同的函数都混在了一起。 但这样的写法就象当初没有对象,只是函数的编程方式。现在写成这样更清晰一些 TWinControlFun=class //和界面控件有关的方法 class function ListView_Del class function ListView_Find class function ListView_Move class function TreeView_Del class function TreeView_Find end; TMyCommand=class //一些基础的 class function CreateGUIDToStr end;
TTest = class
public
procedure test();……
TTest.test();
var
temp//任何类型的局部变量
begin
temp := ……//对局部变量操作。
otherclassvar := …… 对其他类成员变量操作
end;
//外部调用test
var
testobj: TTest;//声明TTest对象
begin
testobj.test; end;
以上程序编译通过并执行。
如果在TTest中定义成员变量,则在test中引用该类的成员变量就报错。为什么呢?应该两次都报错的啊?
/自己将一些常用的操作ListView TreeView的方法写成了函数。方便使用。
function ListView_Del
function ListView_Find
function ListView_Move
function TreeView_Del
function TreeView_Find
function CreateGUIDToStr //得到一个GUID字符串
这样的写法将一些功能完全不同的函数都混在了一起。
但这样的写法就象当初没有对象,只是函数的编程方式。现在写成这样更清晰一些 TWinControlFun=class //和界面控件有关的方法
class function ListView_Del
class function ListView_Find
class function ListView_Move
class function TreeView_Del
class function TreeView_Find
end; TMyCommand=class //一些基础的
class function CreateGUIDToStr
end;
调用的时候 TWinControlFun. ListView_Del 可以利用编译器的提示功能,方便输入不容易出错。
temp//任何类型的局部变量
begin
temp := ……//对局部变量操作。
与类方法没关系,这个是任何函数都可以有的,类方法当然也可以有类方法不可以有
otherclassvar := …… 对其他类成员变量操作
因为此时没有任何类实例,所以也就无法访问任何otherclassvar
不过,这里的otherclassvar 是指其他的类的类成员变量,不是TTest类。而不是说otherclassvar 是TTest类的成员变量
我的问题是声明一个类的对象,但又没有用该类的构造函数(额,这里没有定义类的构造函数。不知道定义类的构造函数是否还会这样。)去创建这个对象,就使用这个对象引用了该类的方法,而程序不会报错。
就像sz_haitao兄说的,没有任何类实例,应该是无法引用该类的非静态方法的。但是程序却能正常执行。而如果在方法中引用了该类定义的变量则肯定报错。
为什么会有这种差别呢?
能否用类在计算机中实例化过程解释?我只知道对象实例化的时候拷贝了类的所有东东,然后给了指向这个对象的指针。