zoukankan      html  css  js  c++  java
  • 深入类中的方法(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;
    
  • 相关阅读:
    跨域请求
    django数据模型中关于on_delete, db_constraint的使用
    rest-framework之分页器
    跨域请求
    相对路径与绝对路径
    html常用标签
    ES6中字符串扩展
    javascript中startswith和endsWidth 与 es6中的 startswith 和 endsWidth
    Angular6 组件树结构优化
    docker限制容器内存使用上限
  • 原文地址:https://www.cnblogs.com/fansizhe/p/12729759.html
Copyright © 2011-2022 走看看