我在父类声明了一个方法,在子类可以替换这个方法。
在书中说可以
1、在父类中把该方法声明为虚方法,在子类中通过override来覆盖该方法。
2、在父类中把该方法声明为静态方法,在子类中用相同的方法名替换该方法。
我想问一下他们的区别?

解决方案 »

  1.   

    我还是不太懂。Linux2001(我想买手提电脑啊!) 能不能说的更清楚点。
    在使用方面两者的区别。
      

  2.   

    静态方法:
      TFrmDBEdit = class(TForm)
      public
        procedure Show;
      end;procedure TFrmDBEdit.Show;
    begin
      //inherited;这里这句没用,因为是静态方法,被替换了
      Visible:=true;
    end;
    而虚方法可以用inherited关键字调用父类的同名方法
    纯虚方法用关键字 virtual;abstract;声明,如
        procedure SetFormID;virtual;abstract;
    这样子类就必须override此方法
      

  3.   

    在Delphi中,只要不是虚方法(virtual) 和 动态方法(dynamic) 的都是静态方法, 静态方法和虚方法(或者动态方法)的区别就是是编译时绑定还是运行时绑定. 通常Delphi避免称呼静态方法, 而以方法来称呼他们. 用class声明的是类方法. 可以不用创建实例直接引用
      

  4.   

    xuqi92188
    可以
    这正是多态的体现