zoukankan      html  css  js  c++  java
  • (4)关于类的重载

    unit Unit1;

    interface

    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtnrs;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

      TMyForm = class
        public
        procedure Show2;virtual; //虚方法
      end;

     TMyFrom1 = class(TMyForm)

      public
        procedure Show2;override; //覆盖父类同名的方法,也可看作重载。

        //overload重载本类里面的函数或者过程,简单来说就是在当前类中可以声明多个同名但参数不同的函数或过程,下面就声明了两个同名却参数不同的过程
        procedure Show3(str,Str1 : string);overload;
        procedure Show3(Str: String);overload;

     end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}





    { TMyForm }

    procedure TMyForm.Show2;
    //父类的Show2
    begin
      ShowMessage('这是父类的');
    end;


     { TMyFrom1 }
    procedure TMyFrom1.Show2;
    //子类的Show2
    begin
      inherited;  //该指令字的意思就是继承,执行父类中同名函数或者过程从而实现多态。当然也可以不继承
      ShowMessage('这是子类的');   //然后才输出自己的方法、
    end;

    procedure TMyFrom1.Show3(str, Str1: string);
    begin
      ShowMessage(str + Str1);  //通过overload重载的过程,他有两个参数
    end;

    procedure TMyFrom1.Show3(Str: String);
    begin
      ShowMessage(Str);         //还是刚才通过overload重载的过程,他有一个参数,他们虽然同名,但是却实现了不同的操作。
    end;



    procedure TForm1.Button1Click(Sender: TObject);
    //执行只有一个参数的Show3
    var
      my : TMyFrom1;
    begin
      my := TMyFrom1.Create;
      my.Show3('123');
      my.Free;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    //执行有两个参数的Show3
    var
      my : TMyFrom1;
    begin
      my := TMyFrom1.Create;
      my.Show3('123','123');
      my.Free;
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    //执行子类的Show2,因为在子类Show2方法的实现过程中有inherited指令字,所以将会分别输出父类的Show2与子类的Show2
    var
      my : TMyFrom1;
    begin
      my := TMyFrom1.Create;
      my.Show2;
      my.Free;
    end;

    end.

     


    重载的好处就是真正的实现了面向对象的多态性,同样一个函数可以根据参数的不同实现不同的各种参数。大大的减少了代码的数量也方便我们记忆。

  • 相关阅读:
    如何优化多个关键字
    如何优化中小型企业网站
    SEO内容为王之如何创造伪原创
    中央电化教育馆教学资源库介绍
    教育网络游戏《学乐吧》介绍
    教育技术学专业主干课程系列教材(共八本)
    百度,google对网站首页内页权重分配的区别
    网站内链对网站排名有那些作用和影响?
    网站好排名,页面内链少不了
    公务员考试与事业单位考试
  • 原文地址:https://www.cnblogs.com/mdnx/p/2573817.html
Copyright © 2011-2022 走看看