zoukankan      html  css  js  c++  java
  • override overload reintroduce的区别(delphi)

     1、override overload reintroduce的中文叫法是什么?
      override:覆盖;overload:重载;Reintroduce:重定义
    2、在子类中override或overload父类中的动态或虚拟方法后是否会改变父类中的相应方法?
       不会
    3、self是怎么回事,怎么使用?
       Self因为这这个对象本身,例如,在TForm1的OnCreate事件中写Self指的是TForm1实例化后的对象,如果TForm1上有一个TButton叫做Button1,那么OnButton1Click中写的Self也是TForm1实例化后的对象,
    4、reintroduce与override overload有何区别,怎么使用?
        在子孙类中要声明一个与祖先类中参数不同的方法的时候用Reintroduce,
        但需要重新定义一个祖先类总的虚拟的或者动态的方法的时候,要用到Override;如果祖先类中的方法不是虚拟的或者动态的(定义的时候有virtual;就是虚拟的,有dynamic;就是动态的);那么是没有办法override的
        至于Overload,一般适用于定义一组不同参数的函数,这些函数也可以不是Of Objects(中文该怎么说?)。
     reintroduce引入是为了屏蔽父类的一个虚方法,而在子类中生成一个新的方法;overload是为了处理同名的方法有不同的参数而设计的;  
      其实你不使用reintroduce也会覆盖屏蔽父类的方法的但是会产生一个警告,  
      使用了这个关键字,表明你要屏蔽这样不会产生警告的!
     
     
     
    如果类不从别的类继承(实际上也就是从TObject继承),
    constructor Create; virtual;   //virtual表示虚函数,表示可以被子类override;
    destructor Destory: virtual;
    如果从其它类继承,如:TForm
    constructor Create(AOwner: TComponent); override;
    destructor Destory: override;
    如果子类想再overload一个函数,则必须加上reintroduce和overload
    constructor Create(AOwner: TComponent); overload; override; //这里的overload必面在override之前.
    constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce; overload;

    例子
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;

    type
      Ta = class(TObject)
      public
        constructor Create; virtual;
        destructor Destory; virtual;
        procedure aaa; virtual;
      end;
      tb  = class(ta)
      public
        constructor Create; overload; override;
        constructor Create(a: String); reintroduce; overload;
        destructor Destory; override;
        procedure aaa; overload; override;
        procedure aaa(a: string); reintroduce; overload;
      end;

      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        c: tb;
      public
        { Public declarations }
      end;
       
    ---------------------
    作者:honglixx
    来源:CSDN
    原文:https://blog.csdn.net/honglixx/article/details/3624934
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    CVE-2020-5405 Spring Cloud Config 目录穿越漏洞分析
    CVE-2019-3799spring-cloud-config 目录穿越漏洞复现
    fastjson<=1.2.68的漏洞分析
    【转载】半自动化挖掘request实现多种中间件回显
    整理一下weblogic回显的代码
    CentOS7在python交互模式下输入退回键时出现乱码^H^H
    1 单例设计模式
    用nohup命令实现PHP的多进程
    用进程和线程关系引入操作系统学习
    8.5 归并排序
  • 原文地址:https://www.cnblogs.com/jijm123/p/10548764.html
Copyright © 2011-2022 走看看