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;

你可能感兴趣的:(职场,Delphi,休闲)