zoukankan      html  css  js  c++  java
  • 深入类中的方法(2)- 关于覆盖与重定义

    //标准的覆盖是这样的
    TBass = class
      procedure Proc; virtual; {或用 dynamic}
    end;
    
    TChild = class(TBass)
      procedure Proc; override;
    end;

    //以下几种情况属于重定义, 其中例 3-5 还会有编译提示
    
    {例1}
    TBass = class
      procedure Proc;
    end;
    
    TChild = class(TBass)
      procedure Proc;
    end;
    
    {例2}
    TBass = class
      procedure Proc;
    end;
    
    TChild = class(TBass)
      procedure Proc; virtual;
    end;
    
    {例3}
    TBass = class
      procedure Proc; virtual;
    end;
    
    TChild = class(TBass)
      procedure Proc; virtual;
    end;
    
    {例4}
    TBass = class
      procedure Proc; virtual;
    end;
    
    TChild = class(TBass)
      procedure Proc;
    end;
    
    {例5}
    TBass = class
      procedure Proc; virtual;
    end;
    
    TChild = class(TBass)
      procedure Proc; dynamic;
    end;
    
    {上面这五种情况我们尽量不要使用}

    //方法重定义时, 避免编译提示的办法
    
    {办法1: 使用 reintroduce 指示字}
    TBass = class
      procedure Proc; virtual;
    end;
    
    TChild = class(TBass)
      procedure Proc; reintroduce;
    end;
    
    {办法2: 使用编译器指令}
    TBass = class
      procedure Proc; virtual;
    end;
    
    {$WARNINGS OFF}
    TChild = class(TBass)
      procedure Proc; virtual;
    end;
    {$WARNINGS ON}
  • 相关阅读:
    运输层:广播和多播
    ICMP:internet控制报文协议 PING
    traceroute 命令
    网络层:IP网际协议 ifconfig -a
    IP层:IP选路
    动态选路协议
    链路层:ARP和RARP命令arp -a/tcpdump -en
    链路层协议以及常用命令介绍netstat
    TCP/IP笔记
    0-1背包问题——回溯法
  • 原文地址:https://www.cnblogs.com/fansizhe/p/12729751.html
Copyright © 2011-2022 走看看