1、基本回答(0-3年)
- 抽象类中可以有实现类,而接口中的方法只能是public abstract;
- 抽象类中的成员可以是各种各样的,而接口中的成员只能是public static final(即使成员声明的时候没有加上,系统也会默认自动加的)
- 抽象类只能继承一个,接口可以多实现。
2、深入回答(3-5年)
接口主要用于约束,约束类必须实现某些方法,而不会深入细节,去注意方法实现的具体方法。而抽象类主要是为了代码的复用,将多个相似的类抽象出共性方法组成一个类,抽象类首先是需要出现子类才能抽象出共性的抽象类,抽象类的实现代价比较大。
接口的设计目的是为了对类的行为进行约束(接口只会限制实现类必须实现哪些方法,而不会限制实现类不能实现什么方法),也是提供一种机制,他只会限制行为的有无,但不会限制实现的方法。
抽象类的设计目的是代码复用,他是在子类的基础上抽取出共性的方法。
抽象是对类本质的抽象,接口是对行为的抽象。
使用场景:当关注事物本质的时候使用抽象,当关注操作的时候使用接口。