关于接口类。。
如题。对接口这些一直不了解。请问这是什么用法,怎么上面的接口类能在后台实例化。。
------解决方案--------------------你实例化的是UserManager,而不是IUserManager
------解决方案--------------------你new的是对象,然后赋值给接口,接口是不能new的。
------解决方案--------------------C# 三大特征 继承 封装 多肽 你问的就是多肽
------解决方案--------------------
可以百度一下依赖注入(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出来的。
你也可以自己蹦出来,你自己也能完成这五个动作,也是个动物。但你是从人实例化出来的。
但是你要直接从动物实例化一个什么东西出来,那就是做不到的。所以接口不能直接实例化。
------解决方案--------------------
如果UserManage的IUserManage是隐式实现的,那么没有区别。如果是显示实现的,那么UserManage不能调用接口的方法。