从Java How toProgram关于抽象类:
由于它们仅在继承层次结构中用作超类,因此我们将它们称为抽象超类。 这些类不能用于实例化对象,因为抽象类是不完整的。
子类必须声明“缺失的部分”以成为“具体的”类,您可以从中实例化对象。否则,这些子类也将是抽象的。
要回答您的问题“使用接口的原因是什么?”:
一个 抽象类的目的 是提供一种适当的超类其他类可以继承并且因此共享共同的设计。
与接口相反:
一个 接口描述 了一组可以在对象上调用的方法,但 所有这些方法并没有提供具体的实现
......一旦一个类实现一个接口,该类的所有对象有一个是,一个接口类型的关系,并且 保证该类的所有对象都提供接口描述的功能。
该类的所有子类也是如此。
因此,要回答您的问题“我想知道何时应该使用接口”,我认为您应该在需要完整实现时使用接口,而在需要部分设计时使用抽象类(以实现可重用性)



