最近一致有个疑问,类名(实例).方法 和实例.方法 的在那里,
比如
var
edit1:Tedit;
Tedit(edit1).text:='aaa';
与
edit1.text:='aaa'
有何区别,我在很多地方都遇到如此用法,就是不解.....
比如
var
edit1:Tedit;
Tedit(edit1).text:='aaa';
与
edit1.text:='aaa'
有何区别,我在很多地方都遇到如此用法,就是不解.....
class
如
type
TmyClass=class(tobject)
public
class procedure helloa;
procedure hellob;
end;
....可以使用
Tmyclass.Helloa;
hellob不能这么使,需要实例化后再用
myclass:=tmyclass.Create;
myclass.hellob;
TEdit(edit1)是将edit1强制转换为TEdit
不要和类方法和实例混为一谈
if edit1 is TEdit then
Tedit(edit1).text:='aaa';
强制类型转换会存在的一定的风险性.而类型转换只是更改了对象的执行框架.当改变后的类的执行框架和原类一样或小的时候,运行不会出错,反之会有内存错误.
类方法(Class Procedure)是可以在没有创建类实例的情况下调用这个方法,
有点类似java的静态方法,和c++的友元.