C#中使用的"接口"内部没有代码,和抽像类有点相似,到底有什么实际作用?谁能举个通俗易懂的例子说明一下,谢谢!

解决方案 »

  1.   

    接口与类的最大差异在与接口定义了抽象的方法和索引等,但在接口中并不实现这些抽象的方法和索引,接口的作用是告诉继承他的类,这些方法是要实现的.
        如:在接口中定义了一个getDistance的抽象方法,其目的是为得到两点间的距离.随后定义一个点类,并且这个点类继承了这个接口,那么在点类中就要实现getDistance这个方法.
    接口好比一块模块,规定了必须实现的一些任务.
      

  2.   

    相比于可继承的类型,接口是很底层、很原始的,它的定义不能传递(使用了A接口的B接口如果被C接口使用,C并没有自动使用A接口),也不自动维护代码执行逻辑。c#不支持多重继承,不得已,只能借助于接口。例如 SqlDataReader 即从 DbDataReader继承,又有 IDisposable、IDataRecord 等接口。使用接口,就要忍受接口带来的痛苦,例如当IDataReader扩展了之后,所有使用这个接口的类型就全都手工修改一遍。另外,尽管手工 hard copy 非常愚蠢,但是所有使用 IDataRecord 的类型都会大量 hard copy 代码。因为接口不会自动继承父类的逻辑。