2013-11-04 49 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

是否可以通过接口类型引用变量访问类属性?...因为接口没有变量。 –

相关问题