如果是由类实现的,接口是否会创建对象?

时间:2013-11-04 04:02:20

标签: c# interface

如果一个类实例化它将创建一个object.Memory将分配给该实例。
如果接口被证实,会发生什么?
接口是否有构造函数?它是否创建了一个接口对象。它将内存分配给接口对象

interface IInteface {}   
class Test : IInterface{}

IInterface ex1 = new Test();

以上行会创建什么?

2 个答案:

答案 0 :(得分:4)

接口是无法实例化的抽象概念。它们用于定义实现要实现的类的合同。

然后,您可以创建实现该接口的具体类的实例(通常使用new),并使用接口引用指向实例。

答案 1 :(得分: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

类型的同一单个实例和对象