• 深入类中的方法[6] - 类中的方法重载


    //类中的方法重载首先具备前面说过的重载相关的所有特点, :
    
    TMyClass = class(TObject)
    
      function Fun(s: string): string; overload;
    
      function Fun(i: Integer): Integer; overload; 
    
      function Fun(x,y: Integer): string; overload;
    
    end;
    
    
    
    
    

     
    
     
    
    //但如果是重载父类中的方法, 如果父类中被重载的方法在本类中没有重载的话, 可以省略 overload 指示字
    
    TBass = class(TObject)
    
      function Fun(s: string): string; {这里省略了 overload, 当然也可以不省略}
    
    end;
    
     
    
    TChild = class(TBass)
    
      function Fun(i: Integer): Integer; overload;
    
    end;
    
     
    
    {这个很好理解, 父类并不知道哪个子类要重载它的哪个方法}
    
    
    
    
    

      
    
    //published 区中的方法命名要有唯一性, 该区域中的方法不能重载!
    
     
    
    {这样是不可以的}
    
    TMyClass = class(TObject)
    
    published
    
      function Fun(s: string): string; overload;
    
      function Fun(i: Integer): Integer; overload; 
    
    end;
    
    
    
    
    

      
    
    //这就有一个问题 公共区域, 在默认情况下是归属于 published 区的, 为什么公共区域的函数可以重载? 
    
    {
    
      编译器会把公共区域中的重载函数自动归类到 public , 也可能会给 published 区一个; 
    
      这是我猜的, 没有资料可以参考. 
    
      关于这个问题, 我又搞了一个实验:
    
    }
    
    //在自动生成的 TForm1 类的公共区域添加重载方法:
    
    type
    
      TForm1 = class(TForm)
    
      procedure alert(s: string); overload    {No.1}
    
      procedure alert(s1,s2: string); overload; {No.2}
    
      private
    
        { Private declarations }
    
      public
    
        { Public declarations }
    
      end;
    
     
    
    //执行编译后, 只会留下第一个:
    
    type
    
      TForm1 = class(TForm)
    
      procedure alert(s: string); overload      {No.1}
    
      private
    
        { Private declarations }
    
      public
    
        { Public declarations }
    
      end;
    

     

  • 相关阅读:
    退休夫妇不顾反对坚持创业,把自己的品牌推向了市场
    年终将至,财务人如何做好数据分析?
    圣诞快乐:Oracle Database 19c 的10大新特性一览
    perl 获取表记录数
    rex 防止调度还没完成后又继续发起
    希腊女孩创办自媒体教希腊语,如今用户已达1000人
    在20天里赚三千多元,他靠创意经营商店,扩大了店面
    小杂货店的崛起,他坚信创新和拼搏是成功的两大法宝
    thinkphp
    thinkphp
  • 原文地址:https://www.cnblogs.com/luckForever/p/7255026.html
Copyright © 2020-2023  润新知