zoukankan      html  css  js  c++  java
  • AbstractErrorProc 抽象错误处理的指针

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      {父类}
      TBase = class
        procedure proc; virtual; abstract; {抽象方法}
      end;
    
      {子类}
      TChild = class(TBase)
        procedure proc; override; {在子类中覆盖、实现方法}
      end;
    
    
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    { TChild }
    //方法实现
    procedure TChild.proc;
    begin
      ShowMessage('IsChild');
    end;
    
    
    //AbstractErrorProc 将要调用的过程
    procedure err;
    begin
      ShowMessage('Err...');
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      B: TBase;
      C: TChild;
    begin
      {AbstractErrorProc 是抽象错误处理的指针, 对应一个无参数的外部过程}
      AbstractErrorProc := Addr(err);
    
      {在子类中调用方法, Ok}
      C := TChild.Create;
      C.proc; {IsChild}
      C.Free;
    
      {父类通过子类实现后调用方法, Ok}
      B := TChild.Create;
      B.proc; {IsChild}
      B.Free;
    
      {父类自实现后调用方法, 将会调用 AbstractErrorProc 指定的错误过程; 因为父类中的方法还是抽象的}
      B := TBase.Create;
      B.proc; {Err...}
      B.Free;
    end;
    
    end.
    
  • 相关阅读:
    centos7内存处理
    MySQl分析工具之mysqltuner.pl及mysqlslap
    Mycat-web 安装
    【NOI2001】【Luogu P2704】【POJ1185】炮兵阵地
    【OpenJudge 7834】分成互质组
    Assignment(单调队列)
    OO’s Sequence
    【注意】邻接表
    20190405模拟测试
    【USACO2010open】时间旅行
  • 原文地址:https://www.cnblogs.com/del/p/1021763.html
Copyright © 2011-2022 走看看