个人认为,接口其实是一个交互的合约,虽然抽象类和接口有些相似,但两者还是有区别的.
当你的一个方法,或操作是针对一个抽象类的是候,意味着可以和这个方法交互的都必然是这个抽象类的派生类.当你有一个完全不同的类,它要和这个方法交互而去实现类似的操作时,你会发现,用抽象类是无能为力的,除非你作出较大的修改.
而当你的一个方法或操作是针对一个接口的时候,上面的问题就不会成为问题,因为,只要其它类实现了这个接口,这个方法就可以和它交互.而这新加的功能是不需要对原来的代码作什么太大的修改,甚至是不必修改就可以了.这样无疑是一种灵活的架构.