注册 登录
编程论坛 Delphi论坛

构造的问题

liuqiang_sy 发布于 2007-05-16 22:37, 675 次点击
type
TPerson = class
public
Name:string;
Age:Integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
consen:Tperson;
begin
consen:=Tperson.create;
consen.Name:='小珊';
consen.Age:=25;
showmessage(consen.Name);
showmessage(inttostr(consen.Age));
consen.Free;
end;
//***************************************************//
tpye
TPerson=object
public
Name:string;
Age:integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
consen:Tperson;
begin
consen.Name:='小珊';
consen.Age:=25;
showmessage(consen.Name);
showmessage(inttostr(consen.Age));
end;

两者有什么区别吗?第一种不用consen:=Tperson.create;也可以操作对象成员.
4 回复
#2
volte2007-05-17 08:14

压根你就没有研究研究OO 编程!

面向对象的封装,多态,继承. 你理解了多少.

看看你的程序:

consen.Name:='小珊';
consen.Age:=25;
showmessage(consen.Name);
showmessage(inttostr(consen.Age));

你不如用2个变量来替代consen.name, consen.age.有什么区别.
象你这么用类,类的设计需要抽象化,不是粘手就来的.

#3
anthony6342007-05-17 11:15

如果你想测试class和object的区别的话,我大概知道一些,
class如果后面不填写特定的继承类型,则默认继承tobject
type
TPerson = class(Tobject), Tobject封装了构造,析构函数和别的一些方法。
而object,称为对象类型(前面是类类型),如果部继承任何的对象类型,则表示这个类没有任何的父类,所以没有构造,析构等方法,这时它的使用方法形同一个记录的使用方法。

#4
liuqiang_sy2007-05-17 16:31

那么上边写的class不加继承类型的话和默认继承tobject等同吗?

#5
anthony6342007-05-17 16:34

是的,Class默认继承Tobject

1