我想问一下有关虚拟方法的问题,在线等待 我在父类声明了一个方法,在子类可以替换这个方法。在书中说可以1、在父类中把该方法声明为虚方法,在子类中通过override来覆盖该方法。2、在父类中把该方法声明为静态方法,在子类中用相同的方法名替换该方法。我想问一下他们的区别? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我还是不太懂。Linux2001(我想买手提电脑啊!) 能不能说的更清楚点。在使用方面两者的区别。 静态方法: TFrmDBEdit = class(TForm) public procedure Show; end;procedure TFrmDBEdit.Show;begin //inherited;这里这句没用,因为是静态方法,被替换了 Visible:=true;end;而虚方法可以用inherited关键字调用父类的同名方法纯虚方法用关键字 virtual;abstract;声明,如 procedure SetFormID;virtual;abstract;这样子类就必须override此方法 在Delphi中,只要不是虚方法(virtual) 和 动态方法(dynamic) 的都是静态方法, 静态方法和虚方法(或者动态方法)的区别就是是编译时绑定还是运行时绑定. 通常Delphi避免称呼静态方法, 而以方法来称呼他们. 用class声明的是类方法. 可以不用创建实例直接引用 xuqi92188可以这正是多态的体现 同一模块下做个与做好的单元一样的单元怎么做比较快 简单问题(送100分) 急!!!关于try...except的问题。 怎么得到dbgrid中选中的某一行的某一列的值 如何在程序中作出windows xp 风格的窗体,希望各位大哥多多指教! 我怎么知道并取得TDATASET中被修改的字段以及修改前后的值? Canvas.Arc的用法 不知道大家是否能够让combobox右边的小箭头按钮不可见 ,但是在点击后才能可见 ,并且功能照旧 懂数据库的请进 有关 TADOquery的问题 Delphi中没有vector怎么来代替这个? 有关ADOConnection的问题,明天中午结帐。
在使用方面两者的区别。
TFrmDBEdit = class(TForm)
public
procedure Show;
end;procedure TFrmDBEdit.Show;
begin
//inherited;这里这句没用,因为是静态方法,被替换了
Visible:=true;
end;
而虚方法可以用inherited关键字调用父类的同名方法
纯虚方法用关键字 virtual;abstract;声明,如
procedure SetFormID;virtual;abstract;
这样子类就必须override此方法
可以
这正是多态的体现