程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> delphi的接口的意義是不是跟C++和Java的不同呢

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

編輯:Delphi
 

fellow99說:<!--StartFragment --> delphi的接口的意義是不是跟C++和Java的不同呢?

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

  

  IInterface1 = interface
  end;

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

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

  
  首先,編譯器不承認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;

  想想沒有道理,<!--StartFragment --> kbs說在D7中是可以的,我決定在D5中試一試。
  
  試驗的結果是,在D5中第一個問題是不存在的,第二個問題的,改 obj 的聲明為:
  var
    obj: TClass1;

  就可以了。因為TObject 是不能 as 為 IInterface2 的,因為它的定義中並沒有從 IInterface2 繼承。
  
  據我看來,接口的意義不僅體現在語法上,更多的是應用方式:聲明功能而不是實現,可以有各種不同的實現。應用的場合是有預想到的多個實現。如 ADO、dbExpress、JDBC 的驅動程序,由於數據庫類別的不同,將有不同的實現。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved