面试时候可以从语法层面回复问题:
接口和抽象类在语法上有一些区别,主要涉及以下几个方面:
声明方法:抽象类使用 abstract 关键字进行声明,使用 class 关键字定义类。接口使用 interface 关键字进行声明。
继承关系:抽象类通过使用 extends 关键字继承其他类或者抽象类。一个类只能继承一个抽象类。接口通过使用 implements 关键字实现一个或多个接口。一个类可以实现多个接口。
方法实现:抽象类可以包含实现的方法和抽象的方法。接口只能包含抽象的方法,不包含具体的方法实现。所有的方法都隐式地被声明为抽象方法,不需要使用 abstract 关键字。实现接口的类必须提供方法的具体实现。Java8引入了接口中的静态方法和默认方法,使得接口具备了一定的实现能力。