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.

  • 相关阅读:
    (六)面向对象进阶
    (五)绑定方法与非绑定方法
    (四)封装
    (三)多态与多态性
    (二)继承与派生
    (一)面向对象的程序设计
    网络协议
    三.计算机网络简介
    二.计算机的发展史及多道技术
    一.计算机基础知识
  • 原文地址:https://www.cnblogs.com/aipeli/p/1767231.html
Copyright © 2011-2022 走看看