D
dajiangxu
Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi类与对象中,构造函数是用来初始化对象的。但在程序中什么时候需要用,什么时候不需要用啊?
下面的类子中,学生类和工人类都是人类的子类,为什么工人类需要用到构造函数而学生类不需要啊?请各位帮我解答一下,谢谢!
t y p e
THuman = class // 人类
p r i v a t e
Age:Integer; // 年龄
p u b l i c
Name:string; // 姓名
function GetAge:Integer; // 获取年龄
procedure SetAge(A:Integer); // 设置年龄
e n d ;
TStudent = class(THuman) // 学生类
p u b l i c
SchoolName:string; // 学校名称
procedure ShowInf; // 显示学生信息
e n d ;
T Worker = class(THuman) // 工人类
p u b l i c
Wageouble; // 薪水
constructor Create(W: D o u b l e ) ;
destructor Destroy;override;
e n d ;
function THuman.GetAge:Integer; // 获取人员的年龄
b e g i n
R e s u l t : = A g e ;
e n d ;
procedure THuman.SetAge(A:Integer); // 设置人员的年龄
b e g i n
A g e : = A ;
e n d ;
procedure TStudent.ShowInf; // 显示学生的信息
b e g i n
Wr i t e l n ( '姓名:',Name,' 年龄:',GetAge,' 学校:' , S c h o o l N a m e ) ;
e n d ;
constructor TWo r k e r. C r e a t e ( Wouble); // 工人类的构造函数
b e g i n
inherited Create; // 调用父类的构造函数
Wr i t e l n ( '调用工人类的构造函数。' ) ;
Wa g e : = W;
e n d ;
destructor TWo r k e r.Destroy; // 工人类的析构函数
b e g i n
Wr i t e l n ( '姓名为:',Name,' 的工人类对象被删除。' ) ;
inherited Destroy; // 调用父类的析构函数
e n d ;
v a r
S1: TStudent; // 声明一个学生类的变量
W1: TWorker; // 声明一个工人类的变量
b e g i n
S1:=TStudent.Create; // 调用默认的构造函数创建对象
S 1 . N a m e : = '王松' ;
S 1 . S e t A g e ( 9 ) ;
S 1 . S c h o o l N a m e : = '树人小学' ;
S1.ShowInf; // 显示学生信息
S1.Destroy; // 调用默认的析构函数
W 1 : = T Wo r k e r.Create(1925.62); // 调用构造函数创建对象
W 1 . N a m e : = '陈建辉' ;
W 1 . A g e : = 2 6 ;
// 显示工人信息
Wr i t e l n ( '姓名:',W1.Name,' 年龄:',W1.Age,' 月薪:' , W 1 . Wa g e ) ;
W1.Destroy; // 调用自定义的析构函数
e n d .
下面的类子中,学生类和工人类都是人类的子类,为什么工人类需要用到构造函数而学生类不需要啊?请各位帮我解答一下,谢谢!
t y p e
THuman = class // 人类
p r i v a t e
Age:Integer; // 年龄
p u b l i c
Name:string; // 姓名
function GetAge:Integer; // 获取年龄
procedure SetAge(A:Integer); // 设置年龄
e n d ;
TStudent = class(THuman) // 学生类
p u b l i c
SchoolName:string; // 学校名称
procedure ShowInf; // 显示学生信息
e n d ;
T Worker = class(THuman) // 工人类
p u b l i c
Wageouble; // 薪水
constructor Create(W: D o u b l e ) ;
destructor Destroy;override;
e n d ;
function THuman.GetAge:Integer; // 获取人员的年龄
b e g i n
R e s u l t : = A g e ;
e n d ;
procedure THuman.SetAge(A:Integer); // 设置人员的年龄
b e g i n
A g e : = A ;
e n d ;
procedure TStudent.ShowInf; // 显示学生的信息
b e g i n
Wr i t e l n ( '姓名:',Name,' 年龄:',GetAge,' 学校:' , S c h o o l N a m e ) ;
e n d ;
constructor TWo r k e r. C r e a t e ( Wouble); // 工人类的构造函数
b e g i n
inherited Create; // 调用父类的构造函数
Wr i t e l n ( '调用工人类的构造函数。' ) ;
Wa g e : = W;
e n d ;
destructor TWo r k e r.Destroy; // 工人类的析构函数
b e g i n
Wr i t e l n ( '姓名为:',Name,' 的工人类对象被删除。' ) ;
inherited Destroy; // 调用父类的析构函数
e n d ;
v a r
S1: TStudent; // 声明一个学生类的变量
W1: TWorker; // 声明一个工人类的变量
b e g i n
S1:=TStudent.Create; // 调用默认的构造函数创建对象
S 1 . N a m e : = '王松' ;
S 1 . S e t A g e ( 9 ) ;
S 1 . S c h o o l N a m e : = '树人小学' ;
S1.ShowInf; // 显示学生信息
S1.Destroy; // 调用默认的析构函数
W 1 : = T Wo r k e r.Create(1925.62); // 调用构造函数创建对象
W 1 . N a m e : = '陈建辉' ;
W 1 . A g e : = 2 6 ;
// 显示工人信息
Wr i t e l n ( '姓名:',W1.Name,' 年龄:',W1.Age,' 月薪:' , W 1 . Wa g e ) ;
W1.Destroy; // 调用自定义的析构函数
e n d .