抽象类和接口的区别

这两个星期,朋友结婚、公司活动、任务、岗位线座谈会,忙得不可开交,趁着周末,让自己闲下来写篇博文。回想起我在看设计模式的时候,经常看到书上经常会用到静态类和接口,但却不了解抽象类和接口的区别,俗话说,不了解透彻就无法运用到实际场景上(PS:这俗话当然是我自己编的~_~),那它们两者的区别在哪呢?

1、命名方式

抽象类:用abstract前缀做类的类型

接口:用interface前缀做类的类型

2、继承方式

抽象类:跟普通继承一样,用extends

接口:用implements

一个类只能继承一个抽象类,但能实现多个接口

3、构造

抽象类:跟普通的类一样有构造函数

接口:没有构造函数

接口中的方法默认都是public类型的,而抽象类中的方法可以使用private,protected,public来修饰。

4、使用

抽象类:适合作为基类使用,比如一些子类相同的行为可以封装在抽象类,进行调用。举个例子:教师、警察、学生都是人,那么他们就可以继承“人”这个抽象类,从而可以使用“人”这个抽象类里的所有行为。

接口:适合定义类的规范,比如一些类的功能是一样的,只是逻辑方面不同,就可以实现相对应的接口,这样可以规范化这些类,让后来的开发者知道这些规范。