您的位置:首页 > 其它

关于抽象类和接口的异同

2017-05-07 19:20 288 查看
抽象类和接口都用于实现抽象,可以声明抽象方法。 抽象类和接口都不能被实例化。下面给出的抽象类和接口之间有许多区别。

抽象类

抽象类可以有抽象和非抽象方法。

抽象类不支持多重继承。

抽象类可以有final,非final,静态和非静态变量。

抽象类可以提供接口的实现。

abstract关键字用来声明抽象类。

含有抽象方法的类 只能被定义为抽象方法 抽象方法只有方法签名没有方法实现的方法,

抽象方法没有方法体 public abstract void test();

接口

接口中的所有方法都是抽象方法 接口只能继承接口不能继承类

接口只能有抽象方法。 从Java 8开始,它也可以有默认和静态方法。

接口支持多继承。

一个类实现一个或者多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法

接口只有静态和final变量。

接口不能提供抽象类的实现。

interface关键字用于声明接口。

异同

1、接口和抽象类都不能被实例化 位于继承树的顶端 被其他类实现和继承

2、实现接口和继承抽象类的子类都必须实现这些抽象方法

3、接口和抽象类之间的差别非常大

4、 接口中只能包含抽象方法,不包括已经提供实现的方法, 抽象类则完全可以包含普通方法

5、接口不能定义静态方法,而抽象类可以定义静态方法

6、 接口里不包含构造器
4000
,而抽象类就可以包含,但是不是用于创建对象,而是让子类来调用这些构造器来完成抽象类的初始化操作

7、接口中不能包括初始化块 但是抽象类中可以包含初始化块

8、一个类最多只能有一个直接父类 包括抽象类,但是一个类可以直接实现多个接口,通过实现多个接口来解决Java单继承的不足

简单地说,抽象类实现了部分抽象(0到100%),而接口实现了完全抽象(100%)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: