相同点:ide
都位于继承的顶端,用于被其余实现或继承;函数
都不能实例化;对象
都包含抽象方法,其子类都必须覆写这些抽象方法;继承
区别:接口
抽象类为部分方法提供实现,避免子类重复实现这些方法,提供代码重用性;接口只能包含抽象方法;it
一个类只能继承一个直接父类(多是抽象类),却能够实现多个接口;(接口弥补了Java的单继承)class
两者的选用:构造函数
优先选用接口,尽可能少用抽象类;方法
须要定义子类的行为,又要为子类提供共性功能时才选用抽象类;总结
个人总结:
接口不能有构造函数,抽象类是能够有构造函数的,
abstract能够定义构造函数(包括带函数的构造函数),由于要保证其子类在建立的时候可以进行正确的初始化,可是Abstract类不能被实例化。
知识点:若是不能够或者没有建立对象,那么咱们必须加上static修饰,不能用对象调用,就只好用类去调用。