看到网上一篇文章,写的如何取ActiveX控件所在浏览器窗口的文档对象,竟然这样使用,文中用的语言是C#
IHTMLDocument2 pDoc2 = ........
我看了MSDN,指明IHTMLDocument2是一个interface,搞不懂这条语句什么意思,语法上可以这么写吗?
不好意思,我以前是写C程序的,面向对象不太懂,难道pDoc2是一个变量吗?或者是一个对象吗?

解决方案 »

  1.   


    对比c语言的话,pDoc2是一个指针,指向实现了IHTMLDocument2接口的类的对象。在c#中interface和abstract是不能实例化的,不能实例化也就是不能产生对象。
      

  2.   

    class aa:IHTMLDocument2
    {
       //实现IHTMLDocument2的成员
    }class Program
    {
       static void main()
       {
           IHTMLDocument2 pDoc2 = new aa();
           // new aa()将产生一个匿名对象。
           // pDoc2是一个指向匿名对象的指针。
       }
    }
      

  3.   

    返回一个对象和返回一个接口是不一样的
    放回对象使用的是对象的方法属性
    返回接口是使用接口的对象方法属性
    例如一个接口有a方法b属性
    有c,d两个对象他们继承接口
    c实现全部,d实现全部但是封装了一个
    这时候你在调用是,使用接口和对象就出现差别了