文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>静态方法 和 virtual ,Dynamic,override 的理解

静态方法 和 virtual ,Dynamic,override 的理解

时间:2010-08-27  来源:dengdeng

参考万一老师: http://www.cnblogs.com/del/archive/2007/12/17/1002959.html

理解如下:

  TBase = class
    procedure proc1; virtual;
    procedure proc2;
  end;

  TChild = class(TBase)
    procedure proc1; override;
    procedure proc2;
  end;

 

procedure TBase.proc1;
 begin ShowMessage('B1');
end;

procedure TBase.proc2;
begin
  ShowMessage('B2');
end;

{ TChild }

procedure TChild.proc1;
begin
  //inherited;
  ShowMessage('C1');
end;

procedure TChild.proc2;
begin
  ShowMessage('C2');
end;

{
 静态方法 : 编译期绑定
 virtual,dynamic 虚方法 运行期绑定,谁创建就绑定到谁的方法上。
}
procedure TForm1.btn7Click(Sender: TObject);
var
  B: TBase;
  C: TChild;
  BC: TBase;
begin
  B := TBase.Create;
  C := TChild.Create;
  BC := TChild.Create;

  B.proc1;          //B1  TBase.proc1
  B.proc2;          //B2  TBase.proc2
  TChild(B).proc1;  //B1  虚方法动态绑定到B 的创建类TBase上 TBase.proc1
  TChild(B).proc2;  //C2  静态方法编译期绑定到 TChild.proc2


  C.proc1;          //C1  绑定到 TChild.proc1
  C.proc2;          //C2  绑定到 TChild.proc2
  TBase(C).proc1;   //C1  虚方法动态绑定到 TChild.TChild
  TBase(C).proc2;   //B2  静态方法编译期绑定到 TBase.proc2


  BC.proc1;         //C1   虚方法动态绑定到 TChild.proc1
  BC.proc2;         //B2   静态方法编译期绑定到 TBase.proc2

  TBase(BC).proc1;  //C1   虚方法绑定到 TChild.proc1
  TBase(BC).proc2;  //B2   静态方法绑定到 TBase.proc2
  TChild(BC).proc1; //C1   绑定到 TChild.proc1
  TChild(BC).proc2; //C2   静态方法绑定到 TChild


  B.Free;
  C.Free;
  BC.Free;

end;

相关阅读 更多 +
排行榜 更多 +
马里奥赛车世界游戏手机版下载

马里奥赛车世界游戏手机版下载

赛车竞速 下载
无畏契约皮肤开箱器手游下载

无畏契约皮肤开箱器手游下载

休闲益智 下载
旭日之城官方正版下载

旭日之城官方正版下载

策略塔防 下载