国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

接口與類的區別

2019-11-18 18:08:12
字體:
來源:轉載
供稿:網友
來自Delphi Help,關鍵字Interface types: overview

接口和類一樣,只能在程序或單元的最外層被聲明(也就是interface section,也就是全局可見的),不能在過程或函數中聲明。接口類型的聲明格式如下:
type interfaceName = interface (ancestorInterface)  //關鍵字interface
   ['{GUID}']   //全局唯一標識符
 memberList    //成員列表
 end;
其中(ancestorInterface) 和['{GUID}'] 是可選的,接口聲明和類相似,但是有如下的約束:
1,memberList只能包含方法和屬性。字段在接口中是不允許的。
2,因為接口沒有字段,屬性的read和write指定的必須是方法。
3,所有接口的成員都是公開的(public)。可見性指定(PRivate,protected等)和存儲指定(如stored, default, nodefault)都不允許。(但是一個數組屬性可以帶關鍵字default,請看末尾的說明)
4,接口沒有構造器和析構器。它不能被實例化,除了通過類來實現它的方法。
5,方法不能被聲明成virtual,dynamic,abstract或者override。因為接口不實現它自己的方法,這些指定是沒有意義的。
請看一個接口聲明的例子:
type
  IMalloc = interface(IInterface)
    ['{00000002-0000-0000-C000-000000000046}']
    function Alloc(Size: Integer): Pointer; stdcall;
    function Realloc(P: Pointer; Size: Integer): Pointer; stdcall;
    procedure Free(P: Pointer); stdcall;
    function GetSize(P: Pointer): Integer; stdcall;
    function DidAlloc(P: Pointer): Integer; stdcall;
    procedure HeapMinimize; stdcall;
end;
在一些接口聲明中,關鍵字interface被dispinterface代替。答案是這(還有dispid,read only,write only指定)和特殊平臺有關,在linux編程中不使用。

還有幫助以外的個人一些見解:接口也用來解決多重繼承帶來的混亂問題。Delphi中一個派生類只能繼承一個類,但同時能繼承多個接口。

PS: 關于數組屬性的釋疑,同樣來自Delphi Help, 關鍵字Array properties
請先看例子:
    property Strings[Index: Integer]: string  ...; default;
這樣也我們就可以用object[index]來代替object.property[index];但是也要注意,象這樣的屬性只能存在一個,不然大家也知道會發生什么事情了。


上一篇:編程打開特殊的系統窗口(如控制面板)

下一篇:跟日期有關的兩條經典SQL語句

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 原平市| 思南县| 新乡县| 安义县| 稷山县| 巴彦淖尔市| 固阳县| 托里县| 连平县| 大庆市| 马龙县| 朝阳区| 唐河县| 拉孜县| 大方县| 邻水| 新蔡县| 若羌县| 武威市| 衡山县| 慈溪市| 任丘市| 彩票| 莒南县| 安徽省| 谢通门县| 夏河县| 新巴尔虎右旗| 泽库县| 合阳县| 桂阳县| 福建省| 敦化市| 集贤县| 若羌县| 大兴区| 鹤山市| 洞头县| 金华市| 确山县| 洞头县|