在AO开发中,经常会遇到类似的声明:
IBasicMap pMap=new MapClass();
于是就会产生这种疑问,为什么不这样声明呢?
MapClass pMap=new MapClass();
如果这样声明,将会编译错误,不能通过类的全权名进行方法的调用,只能用接口实例来访问。
这是因为Class(如上例中MapClass)里实现相关接口的方法, 属性是以显式接口的方式实现的。
举个简单的例子:
如果此时用
就会产生编译错误。
只能用
IBasicMap pMap=new MapClass();
于是就会产生这种疑问,为什么不这样声明呢?
MapClass pMap=new MapClass();
如果这样声明,将会编译错误,不能通过类的全权名进行方法的调用,只能用接口实例来访问。
这是因为Class(如上例中MapClass)里实现相关接口的方法, 属性是以显式接口的方式实现的。
举个简单的例子:
interface IZou
{
void start();
void stop();
}
class Person : IZou
{
void IZou.start()//注:显式接口
MessageBox.Show("开始走");
}
如果此时用
Person p=new Person();
就会产生编译错误。
只能用
IZou p=new Person();