在接口中定义属性

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值