[Warning] uClasses.pas(44): Method 'Destroy' hides virtual method of base type 'TObject'TDB = Class(TObject)
public
  destructor Destroy; overload;
  procedure ConnectDB(AState: Boolean);virtual;abstract;
end;TsqlServer = Class(TDB)
  private
    FADOQSql: TADOQuery;
  protected
  //
  public
    constructor Create(AServerName: string; ADBName: string; AUserName: string;
        APassword: string); overload;
    destructor Destroy; overload;
    procedure ConnectDB(AState: Boolean);
  end;
编译时出现如下警告:[Warning] uClasses.pas(44): Method 'Destroy' hides virtual method of base type 'TObject'
[Warning] uClasses.pas(153): Method 'ConnectDB' hides virtual method of base type 'TDB'不知是什么问题

解决方案 »

  1.   

    基类TDB中的Destroy声明错了,应如下:
    destructor Destroy; override;
      

  2.   

    constructor Create(AServerName: string; ADBName: string; AUserName: string;
            APassword: string); overload;
    这个不能overload
      

  3.   

    procedure ConnectDB(AState: Boolean);override
      

  4.   

    destructor Destroy; override;
      

  5.   

    同意楼上的楼上.另外, procedure ConnectDB(AState: Boolean);virtual;abstract;
    abstract 不要
      

  6.   

    楼上的,那个得要吧
    因为abstract一定得要吧?
    因为abstract表示,父类中不实现此方法,不加,父类中可以实现的,和作者的意图相反啊!
      

  7.   

    另外,我觉得楼主,没有搞清楚overload和override的区别啊,所以才会出现这个错误!
      

  8.   

    public
       destructor Destroy; override;
      

  9.   

    constructor Create(AServerName: string; ADBName: string; AUserName: string;
            APassword: string); override;
        destructor Destroy; override;
    procedure ConnectDB(AState: Boolean);override
      

  10.   

    呵呵
    abstract不光是实现否的问题,有它就不能创建此类的实例,只能将自类的实例附之
      

  11.   

    谢谢各位了,
      确实是我没将 overload 和 override的区别
      我将overload改成override后就没有出现警告了。
    可是还是出了另一个问题:
      TEncrypt = Class(TObject)
      private
        FOnMessage: TMessageEvent;
      protected
      //
      public
        destructor Destroy;override;
        Procedure EnCode(SrcStream:TStream; Var DestStream:TStream);virtual;abstract;
        Procedure DeCode(SrcAStream:TStream; Var DestStream:TStream);virtual;abstract;
        Procedure Messaged(sMessage: string);
        property OnMessage: TMessageEvent read FOnMessage;
      end;TEncrypt14 = Class(TEncrypt)
      private
      //
      protected
      //
      public
        constructor Create; overload;
        destructor Destroy; override;
        Procedure EnCode(SrcStream:TStream; Var DestStream:TStream); override;
        Procedure DeCode(SrcAStream:TStream; Var DestStream:TStream);override;
      end;[Error] uClasses.pas(62): Unsatisfied forward or external declaration: 'TEncrypt.Destroy'
      

  12.   

    constructor Create; overload;??
    去掉overrload