我在一个自定义的类中想用override的时候,它提示我说,cannot override a static method ,为什么呢?override 的含义到底是什么呢?希望有人告诉我答案,谢谢!

解决方案 »

  1.   

    定义create是不能用override的,在前面用constructor代替function就可以了,
    在析构函数时才要用到override的
      

  2.   

    定义create当然是可以用override的了,楼主是在父类的create里没有申明是虚方法或是其它什么的,提供一段代码给你参考
    unit uSayHello;interfacetype
      TMan = class (TObject)
      public
        Language: string;
        Married: Boolean;
        Name: string;
        SkinColor: string;
        constructor create; virtual;
        function SayHello:string;virtual;abstract;
      end;  TChinese = class (TMan)
      public
        constructor create;override;
        function SayHello:string;override;
      end;  TAmerican = class (TMan)
      public
        constructor create;override;
        function SayHello:string;override;
      end;  TFrench = class (TMan)
      public
        constructor create;override;
        function SayHello:string;override;
      end;  TKorean = class (TMan)
      public
        constructor create;override;
        function SayHello:string;override;
      end;implementation{
    ************************************* TMan *************************************
    }
    constructor TMan.create;
    begin
      Name:='张三';
      Language:='中文';
      SkinColor:='黄色';
    end;constructor TChinese.create;
    begin
      inherited;
    end;constructor TAmerican.create;
    begin
      Name:='Lee';
      Language:='英文';
      SkinColor:='黑色';
    end;constructor TFrench.create;
    begin
      Name:='苏菲';
      Language:='法文';
      SkinColor:='白色';
    end;constructor TKorean.create;
    begin
      Name:='金知中';
      Language:='韩文';
      SkinColor:='黄色';
    end;{
    ===声明了抽象方法后,这部分实现代码不再需要了===
    function TMan.SayHello;
    begin
      Result:='chinese.bmp';
    end;
    }end.
      

  3.   

    方法重载啊
    用constructor定义就可以了
      

  4.   

    就是定义一个虚函数,和c++的virtual差不多,不过delphi中第一次定义虚函数时候用virtual或dynamic,以后重载的时候用override,你以前没用过virutal或dynamic就直接用override当然不行。另外在delphi中构造函数也可以override的vcl框架中大部分构造函数都是虚函数,继承的时候必须要override