抽象类与接口类的区别

在实际的开发中可以发现抽象类与接口的定义形式非常相似,从JDK1.8开始就特别明显了,在JDK1.8中接口也可以定义default或static方法了,但是这两个依然有明显的定义区别:

1、定义。

抽象类:abstract class 抽象类名称{}

接口类:interface class 接口类名称{}

2、组成。

抽象类:构造方法、普通方法、静态方法、全局常量、成员

接口类:抽象方法、全局常量、普通方法、static

3、权限。

抽象类:可以使用各种权限定义

接口类:只能使用public

4、子类使用。

抽象类:子类通过extends可以继承一个抽象类

接口类:子类使用implements关键字可以实现多个接口类。

5、两者关系。

抽象类:抽象类可以实现若干个接口

接口类:接口不允许继承抽象类,但是允许继承多个父接口

6、使用。

共同点:1)抽象类或接口必须定义子类;

2)子类一定要覆写抽象类或接口中的全部抽象方法;

3)通过子类的向上转型实现抽象类或接口对象实例化

当抽象类和接口都可以使用的情况下优先考虑接口,因为接口可以避免子类的单继承局限。

另外从一个正常的设计角度而言,也需要先从接口来进行项目的整体设计。


image.png

你可能感兴趣的:(抽象类与接口类的区别)