一、接口与抽象类的不同点
1.抽象类是通过 abstract 关键字创建的,接口是通过 interface 来创建的
2.抽象类是为同一类事物提供功能的,接口是为不同类事物提供功能的
3.抽象类可以被extends继承一个,接口可以被implements实现多个
4.抽象类中包含的元素有:实例变量、静态成员变量、构造方法、实例方法、静态方法、抽象方法
接口中包含的元素有;静态常量、静态方法、抽象方法
5.抽象类是要被子类继承的,通过 extends 关键字继承,接口是要被实现的通过 implements 关键字实现
6.速度抽象类比接口速度快;接口是稍微有点慢,因为它需要花时间去寻找在类中的实现方法
7.抽象类中有各种权限,接口中都是用public修饰
8.抽象方法可以有main方法,并且可以运行,接口中不能有main方法(java8以后接口可以有default和static方法,所以可以运行main方法)
二、抽象类和接口的相同点
1.两者都不能被实例化,如果要实例化,抽象类必须通过抽象类的子类对象,接口必须通过接口的回调对象
2.抽象类和接口都可以定义抽象方法,子类/实现类必须覆写这些抽象方法
总结:继承是一个 "是不是"的关系,而 接口 实现则是 "有没有"的关系