2013-11-04 82 views
1

如果一個類實例化它將創建一個對象。內存將分配給該實例。
如果Interface實例化會發生什麼情況?
接口是否有構造函數?它創建一個接口object.does它alllocate內存接口對象如果接口是由類實現的,接口是否會創建對象?

interface IInteface {} 
class Test : IInterface{} 

IInterface ex1 = new Test();

什麼上面一行將創建?

+3

您是否試過此代碼? –

+0

我們如何使用IInterface創建一個參考? –

+0

您正在討論的行會創建「語法錯誤」 - C#中沒有'New'。附註:編輯後,你的示例與帖子的文本/標題無關 - 你的代碼只是創建一個對象,而post則討論一些不存在的「創建接口對象」的概念。 –

回答

1

接口沒有構造函數,不能自行創建。

將對象分配給變量(包括接口類型的變量)不會創建新對象,它只是對同一對象的另一個引用。

class DerivedWithInterface: Base, IEnumerable {} 

現在你可以創建DerivedWithInterface類的實例,並分配給任何的基類/接口變量,但只有new將創建一個對象:

DerivedWithInterface item = new DerivedWithInterface(); 
IEnumerable asEnumerable = item; // asEnumerable is the same object as create before 
Base asBase = item; 

現在你可以做蒙上回到原來的對象,仍然會出現只有一個(或多達你已經new編起來):

IEnumerable asEnumerableItem = new DerivedWithInterface(); 
DerivedWithInterface itemViaCast = (DerivedWithInterface)asEnumerableItem; 

兩個asEnumerableItemitemViaCast是指類型爲asEnumerableItem的相同單個實例和對象

4

接口是抽象的概念,不能被實例化。它們用來定義實施課程的合同。

然後,您可以創建實現接口(通常與new)具體類的實例,並使用接口參考指向實例。

+1

措辭很好! +1 – Enigmativity

+0

如果接口沒有創建對象。我們怎麼能通過接口指向另一個類對象呢? –

+0

是否可以通過接口類型引用變量訪問類屬性?...因爲接口沒有變量。 –

相關問題