日期:2014-05-17  浏览次数:20843 次

关于接口类。。

如题。对接口这些一直不了解。请问这是什么用法,怎么上面的接口类能在后台实例化。。
接口

------解决方案--------------------
你实例化的是UserManager,而不是IUserManager
------解决方案--------------------
你new的是对象,然后赋值给接口,接口是不能new的。
------解决方案--------------------
C# 三大特征 继承 封装 多肽 你问的就是多肽
------解决方案--------------------
引用:
你new的是对象,然后赋值给接口,接口是不能new的。

原来还可以这样写,,以前没写过,刚没看仔细,。原来 UserManage类是已经继承 IUserManage类的。那我直接改成 UserManage IUmanage = new UserManage()能行吗? 跟上面有什么区别吗? 

可以百度一下依赖注入(DI)
------解决方案--------------------
面向接口编程,看看这个。http://kb.cnblogs.com/page/145704/
------解决方案--------------------
接口没办法“实例化”。

int i; 这是“实例化”么?这是声明i的类型。

同样,接口只是类型。什么是实例化?调用new构造函数的才是。
------解决方案--------------------
IUserManage IUmanage = new UserManage()
你可以把这句话分两句来理解就非常明了了:
  1  UserManage oUmanage = new UserManage(); //这句对象实例化,不解释
  2  IUserManage IUmanage = oUmanage;   //IUmanage 接口就指向了oUmanage对象了。
  然后你可以通过IUmanage来调用接口声明的方法,属性了。而类oUmanage是调用不到接口声明的方法的。
------解决方案--------------------
接口是一系列方法的集合。
比如定义一个接口,有吃,喝,拉,撒,睡。五种方法。接口的名字叫暂且叫做动物。
能够完成这五种动作的就算是这个接口,就是从这个接口继承而来。

你可以拉出一只狗,它就是这个接口的实例。它是动物,但是它是从狗这个类new出来的。
你也可以自己蹦出来,你自己也能完成这五个动作,也是个动物。但你是从人实例化出来的。
但是你要直接从动物实例化一个什么东西出来,那就是做不到的。所以接口不能直接实例化。
------解决方案--------------------
引用:
Quote: 引用:

你new的是对象,然后赋值给接口,接口是不能new的。


原来还可以这样写,,以前没写过,刚没看仔细,。原来 UserManage类是已经继承 IUserManage类的。那我直接改成 UserManage IUmanage = new UserManage()能行吗? 跟上面有什么区别吗?

如果UserManage的IUserManage是隐式实现的,那么没有区别。如果是显示实现的,那么UserManage不能调用接口的方法。