zoukankan      html  css  js  c++  java
  • 关于多态的理解,有助于理解TStream抽象类的多态机制。

    有的时候 不是很明白流的机制,因为有内存流  文件流 图片流 等等 他们之间的相互转化 靠的就是流的多态性。。。。

    unit Unit11;
    
    interface
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
    
    type
      TForm11 = class(TForm)
        btn1: TButton;
        btn2: TButton;
        procedure btn1Click(Sender: TObject);
        procedure btn2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
      TFuLei = class
        public
          function func1(): string; virtual;
      end;
    
      TZiLei = class(TFuLei)
        public
          function func1(): string; override;
      end;
    
    var
      Form11: TForm11;
    
    implementation
    
    {$R *.dfm}
    
    function TFuLei.func1(): string;
    begin
      Exit('func1');
    end;
    
    function TZiLei.func1(): string;
    begin
      Exit('func2');
    end;
    
    /// <summary>
    /// 注意这里的参数是父类,意思是如果传入子类也是可以的,因为子类拥有父类所有的功能,可以向上递归
    /// 且如果子类的覆盖度了父类的方法,那么传入子类的话,delphi会自动调用子类覆盖后的方法
    /// </summary>
    procedure wokao(ALei: TFuLei);
    begin
      ShowMessage(ALei.func1);
    end;
    
    procedure TForm11.btn1Click(Sender: TObject);
    var
      lei: TFuLei;
    begin
      lei := TFuLei.Create;
      wokao(lei);//func1
      lei.Free;
    end;
    
    procedure TForm11.btn2Click(Sender: TObject);
    var
      lei: TZiLei;
    begin
      lei := TZiLei.Create;
      wokao(lei);//func2
      lei.Free;
    end;
    
    end.

    好了,现在我来证明下,是否可以 wokao的参数是子类,然后传入父类的情况,因为父类并不一定能拥有子类的全部功能。

    可见我的理解是对的,当时子类的时候 不允许 传入父类的实例,会编译不通过。。。

  • 相关阅读:
    Apache Commons IO之FileUtils的常用方法
    Java之字节数组和字符串的转换问题
    Java之高级IO,Properties
    Java之IO流(字节流,字符流)
    Java之File与递归
    Java之线程池和Lambda表达式
    java之初学线程
    Java之初学异常
    Java之使用链表实现队列
    请求参数的绑定
  • 原文地址:https://www.cnblogs.com/del88/p/5215954.html
Copyright © 2011-2022 走看看