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

首頁(yè) > 編程 > C++ > 正文

delphi的接口的意義是不是跟C++和Java的不同呢

2019-11-18 18:05:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
 

fellow99說(shuō): delphi的接口的意義是不是跟C++和java的不同呢?

delphi的接口的意義是不是跟C++和Java的不同,怎么我這樣不行的呢:

IInterface1 = interface
end;

IInterface2 = interface(IInterface1)
  PRocedure method();
end;

TClass1 = class(TInterfacedObject, IInterface2)
......
end;


首先,編譯器不承認(rèn)TClass1是IInterface1的派生,一定要寫成TClass1 = class(TInterfacedObject, IInterface2, IInterface1)才可以。

接著,這樣子也不行:
function xxx(): IInterface2;
var
   obj: TObject;
begin
   obj := TClass1.Create;
   result := obj as IInterface2; //不行
   result := IInterface2(obj); //也不行
end;

想想沒(méi)有道理, kbs說(shuō)在D7中是可以的,我決定在D5中試一試。

試驗(yàn)的結(jié)果是,在D5中第一個(gè)問(wèn)題是不存在的,第二個(gè)問(wèn)題的,改 obj 的聲明為:
var
  obj: TClass1;

就可以了。因?yàn)門Object 是不能 as 為 IInterface2 的,因?yàn)樗亩x中并沒(méi)有從 IInterface2 繼承。

據(jù)我看來(lái),接口的意義不僅體現(xiàn)在語(yǔ)法上,更多的是應(yīng)用方式:聲明功能而不是實(shí)現(xiàn),可以有各種不同的實(shí)現(xiàn)。應(yīng)用的場(chǎng)合是有預(yù)想到的多個(gè)實(shí)現(xiàn)。如 ADO、dbExpress、JDBC 的驅(qū)動(dòng)程序,由于數(shù)據(jù)庫(kù)類別的不同,將有不同的實(shí)現(xiàn)。


上一篇:C++與C#混合生成.NET程序

下一篇:Delphi與C++之間通過(guò)實(shí)現(xiàn)函數(shù)與對(duì)象共享

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 黑河市| 遂昌县| 奉新县| 昌江| 富民县| 崇明县| 长海县| 碌曲县| 桑日县| 安远县| 贡嘎县| 曲松县| 清新县| 萨迦县| 邵东县| 武穴市| 宜阳县| 沁阳市| 扶余县| 息烽县| 莲花县| 固阳县| 淮南市| 修文县| 元谋县| 应城市| 滦平县| 吉水县| 横峰县| 武宁县| 玛纳斯县| 乌兰浩特市| 阿尔山市| 奉化市| 徐州市| 崇明县| 鹿邑县| 贵定县| 黄浦区| 阿拉善左旗| 海盐县|