zoukankan      html  css  js  c++  java
  • 在接口中定义属性

    unit Unit1;
    interface
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;
    type
     TForm1 = class(TForm)
      Button1: TButton;
      procedure Button1Click(Sender: TObject);
     end;
     {此接口声明了一个 Name 属性; 因为接口没有字段, read/write 都只能从方法}
     IMyInterface = interface
      function GetName : string;
      procedure SetName(val : string);
      property Name : string read GetName write SetName;
     end;
     {类实现的是接口的读写方法, 属性还是属于接口的; 类可以提供一个储存属性的字段}
     TMyClass = class(TInterfacedObject, IMyInterface)
     private
      FName: string;
     public
      function GetName: string;
      procedure SetName(val: string);

     end;
    var
     Form1: TForm1;
    implementation
    {$R *.dfm}
    { TMyClass }
    function TMyClass.GetName: string;
    begin
     Result := FName;
    end;
    procedure TMyClass.SetName(val: string);
    begin
     FName := val;
    end;

    { TForm1 }
    procedure TForm1.Button1Click(Sender: TObject);
    var
     c: TMyClass;
     i: IMyInterface;
    begin
     c := TMyClass.Create;
     i := c;
     i.Name := 'ABC';
     ShowMessage(i.Name); {ABC}
     //没有一个 c.Name 存在, 这个属性只属于接口
    end;
    end.

  • 相关阅读:
    内存条的物理结构分析【转载】
    JDK动态代理[2]----动态代理设计模式(文章转载于别处)
    shell 计算
    如何使用Vagrant创建linux环境(MacOS版)
    JavaFreemarker01快速上手
    7、验证信息
    6、更新文档
    5、删除文档
    4、查询文档02
    3、查询文档01
  • 原文地址:https://www.cnblogs.com/aipeli/p/1767231.html
Copyright © 2011-2022 走看看