注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 科普系列之-使用Windows的..
 帮助

DELPHI 虚拟继承示例


2006-08-01 17:24:00
 标签:delphi   [推送到技术圈]

type
t_object = class(tobject) //基类
private
public
m_int_age : integer;
m_str_name : string;
procedure setage(p_int_age : integer) ; virtual;
end;

t_child = class(t_object)
private
public
procedure setage(p_int_age : integer) ; override;
end;

t_child_child = class(t_child)
private
public
procedure setage(p_int_age : integer) ; override;
end;

implementation


procedure t_object.setage(p_int_age : integer);
begin
self.m_int_age := p_int_age;
showmessage('t_object.setage(p_int_age : integer)---' + inttostr(self.m_int_age));
end;

procedure t_child.setage(p_int_age : integer);
begin
inherited setage(p_int_age);
self.m_int_age := p_int_age + 20;
showmessage('t_child.setage(p_int_age : integer)---' + inttostr(self.m_int_age));
end;

procedure t_child_child.setage(p_int_age : integer);
begin
inherited setage(p_int_age);
self.m_int_age := p_int_age + 40;
showmessage('t_child_child.setage(p_int_age : integer)---' + inttostr(self.m_int_age));
end;

end.


//调用
var
obj : t_child_child;
begin
obj := t_child_child.create;
obj.setage(10);
obj.free;
end;

 

type
t_object = class(tobject) //基类
private
public
m_int_age : integer;
m_str_name : string;
procedure setage(p_int_age : integer) ; virtual;
end;

t_child = class(t_object)
private
public
procedure setage(p_int_age : integer) ; override;
end;

t_child_child = class(t_child)
private
public
procedure setage(p_int_age : integer) ; override;
end;

implementation


procedure t_object.setage(p_int_age : integer);
begin
self.m_int_age := p_int_age;
showmessage('t_object.setage(p_int_age : integer)---' + inttostr(self.m_int_age));
end;

procedure t_child.setage(p_int_age : integer);
begin
inherited setage(p_int_age);
self.m_int_age := p_int_age + 20;
showmessage('t_child.setage(p_int_age : integer)---' + inttostr(self.m_int_age));
end;

procedure t_child_child.setage(p_int_age : integer);
begin
inherited setage(p_int_age);
self.m_int_age := p_int_age + 40;
showmessage('t_child_child.setage(p_int_age : integer)---' + inttostr(self.m_int_age));
end;

end.


//调用
var
obj : t_child_child;
begin
obj := t_child_child.create;
obj.setage(10);
obj.free;
end;




    文章评论
 
2008-06-11 14:54:18
文章很不错,也欢迎博主访问我的技术blog:
http://xiaowang.blog.51cto.com

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: