关于抽象类和接口的异同

来源:互联网 发布:淘宝网地板砖 编辑:程序博客网 时间:2024/04/30 09:01

抽象类和接口都用于实现抽象,可以声明抽象方法。 抽象类和接口都不能被实例化。下面给出的抽象类和接口之间有许多区别。

抽象类

抽象类可以有抽象和非抽象方法。
抽象类不支持多重继承。
抽象类可以有final,非final,静态和非静态变量。
抽象类可以提供接口的实现。
abstract关键字用来声明抽象类。
含有抽象方法的类 只能被定义为抽象方法 抽象方法只有方法签名没有方法实现的方法,
抽象方法没有方法体 public abstract void test();

接口

接口中的所有方法都是抽象方法 接口只能继承接口不能继承类
接口只能有抽象方法。 从Java 8开始,它也可以有默认和静态方法。
接口支持多继承。
一个类实现一个或者多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法
接口只有静态和final变量。
接口不能提供抽象类的实现。
interface关键字用于声明接口。

异同
1、接口和抽象类都不能被实例化 位于继承树的顶端 被其他类实现和继承
2、实现接口和继承抽象类的子类都必须实现这些抽象方法
3、接口和抽象类之间的差别非常大
4、 接口中只能包含抽象方法,不包括已经提供实现的方法, 抽象类则完全可以包含普通方法
5、接口不能定义静态方法,而抽象类可以定义静态方法
6、 接口里不包含构造器,而抽象类就可以包含,但是不是用于创建对象,而是让子类来调用这些构造器来完成抽象类的初始化操作
7、接口中不能包括初始化块 但是抽象类中可以包含初始化块
8、一个类最多只能有一个直接父类 包括抽象类,但是一个类可以直接实现多个接口,通过实现多个接口来解决Java单继承的不足
简单地说,抽象类实现了部分抽象(0到100%),而接口实现了完全抽象(100%)。

0 0
原创粉丝点击