请说说ObjectPascal中的类和接口的区别,
特别是接口的用法,我不是很理解,能解析一下吗。
分不是问题.

解决方案 »

  1.   

    除去COM方面的描述,你可以把接口想象成没有成员数据的纯虚类
      

  2.   

    对于我们这些新手而言,接口确实是个令人困惑的东西.我觉得接口的很多用法都可以用抽象类来实现.对于多继承,继承接口只是继承了一些方法的定义,子类还必须要去实现这些方法.这种继承的实际意义在是什么?除了com以外,还有什么地方是必须用接口的?有那位大哥能指点一下.
      

  3.   

    接口和类之区别的一个例子。1、你写了一个程序和一个Dll,里边都用到了TStringList,然后选择静态连接来编译。
    然后你在Dll中向主程序返回了一个StringList的实例并由主程序调用了该实例的Add方法。这时候你会得到一个异常。很多人不理解为什么同一个类会出现这样的问题。其实你调用的只是连接在主程序中的TStringList的Add方法,而你其实应该调用Dll中的TStringList的Add方法才不会出异常。这两个TStringList虽然名称相同,但却不可以认为是同一个类,因为它们拥有完全不同的方法表(即它们各个方法的地址是不同的),所以你的Add调用会出错。2、如果你写了一个IStringList的接口并在Dll中实现了它(记住接口声明和实现通常是两个Unit),并在主程序中把接口声明连接了进去,那么你在主程序中调用IStringList1.add的时候就能够调用到Dll中接口实现部分的代码。所以一般地说在程序与Dll通信的时候使用接口作为参数要比使用对象要安全的多。
    不过话又说回来,使用接口还有很多的注意点。相对也比较麻烦,所以在一个相对封闭的程序框架中并不常用。