zoukankan      html  css  js  c++  java
  • Delphi 的接口(4) 接口的属性


    代码文件:

    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.
    
  • 相关阅读:
    聚簇索引与非聚簇索引(二级索引)的区别
    swoole介绍
    什么是mysql执行计划
    php-fpm浅析
    字段设计规范
    mysql排序规则utf8_genera_ci和utf8_bin的区别
    chrome 麦克风被禁用
    获取地址栏参数
    vue 打包去掉console debugger
    Vue less全局变量预处理加载
  • 原文地址:https://www.cnblogs.com/del/p/1496786.html
Copyright © 2011-2022 走看看