在贴段<<delphi技术手册>>上的话
比较经典的,
stargazer
在面试时估计说这些就可以了吧,呵呵.
Classes and Objects类和对象
可以将类想象为一种特殊的记录。与记录相似的是,一个类描述的是一种特殊的类型,
它由任意多个部分组成,每一个部分称为一个字段。与结构不同的是,
一个类可以包含函数和过程(称为方法method),以及属性property。
一个类可以继承自另一个类,因此,它继承了祖先类中所有的字段,方法,以及属性。
一个对象(Object)是一个类的动态实例。对象总是从堆中动态分配得来,
因此一个对象引用(object refrence)更象一个指针(但是不需要pascal的^操作符)。
当你将一个对象引用赋值给一个变量时,Delphi只是复制了指针,而不是复制整个对象实例。
程序中不再结束使用一个对象时,应当调用Free方法显式地释放该对象。
Delphi没有提供自动的垃圾收集机制(后面一章中的提到的接口除外)。
为简短起见,术语“对象引用”简称为“对象”,
但是对象更精确的表述应当是一块内存,Delphi在其中存放该对象的所有字段的值。
在Delphi中使用一个对象的唯一方法就是使用对象引用。
一个对象引用通常以一个变量的形式存在,但是也有函数或者属性返回值的形式。
类同样是一个独立的实体(与Java中的类似,但与C++中的不同)。在Delphi中,
类表现为内存中一张只读的表,表中存放着指向该类的虚方法的指针以及其他许多信息。
一个类引用(Class reference)就是指向该表的一个指针。
类引用最常见的用法是创建一个对象或者用来测试一个对象引用的类型,
也可以在其它许多场合使用。比如,
传递类引用给某个例程或者从一个函数中返回一个类引用。
类引用的类型称为元类(metaclass)。
这是我自己说的
而self则是编译器的一个保留字
在一个类的普通的过程和函数里
self就是上面说的对象引用
在一个类的类方法中
self就是上面说的类引用
其实呢self就是当你调用一个类的过程,函数或类方法时编译器所传递过来的一个
隐藏的指针值,仅此而已
3。为什么要
action := caFree;
看看源代码就可知
Forms.pas的4519行
procedure TCustomForm.Close;
var
CloseAction: TCloseAction;
begin
if fsModal in FFormState then
ModalResult := mrCancel
else
if CloseQuery then
begin
if FormStyle = fsMDIChild then //这句知道了吧
if biMinimize in BorderIcons then
CloseAction := caMinimize else
CloseAction := caNone
else
CloseAction := caHide;
DoClose(CloseAction);
if CloseAction <> caNone then
if Application.MainForm = Self then Application.Terminate
else if CloseAction = caHide then Hide
else if CloseAction = caMinimize then WindowState := wsMinimized
else Release;
end;
end;