override和overload是干什么作用?

解决方案 »

  1.   

    overload 重载方法
    override 覆盖
      

  2.   

    Override是重载,与类的多态没有关系Overload是覆盖,是实现类的多态的方式
      

  3.   

    overload是函数重载的关键字
    比如
    function Max(a, b:integer):integer;overload;
    function Max(a, b :Byte):Byte;overload;override是派生类改写基类虚函数的关键字,比如:
    //在基类中声明的
    function Max(a, b :integer):integer;virtual;//在派生类中改写
    function Max(a, b :integer):integer;override;
      

  4.   

    overload and override体现了多态,
     overload 相当于C++中的重载,即在编译期,通过‘参数’实现静态多态。
     Override 用于派生类对父类方法的继承,类似于C++中的虚拟函数的概念。
       在父类中声明为Virtual的方法,在派生类中有不同实现时可以用Override,
       另外在实现中可以用Inherited来保留父类中的功能。可以说Override是用于
       表现对象的多态性的。与Dynamic声明一样,都是动态绑定的方法。
     举个例子:
      type
        classa = class
          public
            function aaa:integer; virtual;  //function1
          end;    classb = class(classa)
            function aaa:integer; override;   //function2
          end;   var
         c1: classa;
         i: integer;
       begin
         c1 := classb.create;
         i := c1.aaa;
         edit1.text := inttostr(i);
       end;   注意到,上例中c1.aaa调用的是function2,如果没有override则是调用的function1。
      

  5.   

    搞混了。//在派生类中改写
    如   
    alist=class(tlist)
    published
      procedure free;overload;该用overload 还是override;
    end;begin
        ....
        inherited free;
    end;按上面回答的应该是用override,可是我用overload时也好好。