多态是面向对象编程的特征之一,而接口是一系列方法的声明,是一些方法特征的集合,有特定的语法和结构,这两者根本不是同一类型和层次上的概念。接口毫无疑问可以体现出多态性来,但是多态性未必一定要用接口,只要存在方法的重写、重载与动态连接即可体现多态性(如存在继承关系的类之间),所以,不存在“什么时候用接口什么时候用多态”的问题,程序里写的具体代码只可能是接口,只是这代码可能会体现出多态性而已,两者可以在不同的概念层次上并存,不存在冲突。
简而言之,你可以在程序里用代码定义一个接口,但是你不能定义一个多态,多态只是对你代码特征的一种描述,一种概念上的抽象和总结。