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.

  • 相关阅读:
    今天面试一些程序员(新,老)手的体会
    UVA 10635 Prince and Princess
    poj 2240 Arbitrage
    poj 2253 Frogger
    poj 2485 Highways
    UVA 11258 String Partition
    UVA 11151 Longest Palindrome
    poj 1125 Stockbroker Grapevine
    poj 1789 Truck History
    poj 3259 Wormholes
  • 原文地址:https://www.cnblogs.com/aipeli/p/1767231.html
Copyright © 2011-2022 走看看