关于抽象类和接口的异同
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%)。
抽象类
抽象类可以有抽象和非抽象方法。抽象类不支持多重继承。
抽象类可以有final,非final,静态和非静态变量。
抽象类可以提供接口的实现。
abstract关键字用来声明抽象类。
含有抽象方法的类 只能被定义为抽象方法 抽象方法只有方法签名没有方法实现的方法,
抽象方法没有方法体 public abstract void test();
接口
接口中的所有方法都是抽象方法 接口只能继承接口不能继承类接口只能有抽象方法。 从Java 8开始,它也可以有默认和静态方法。
接口支持多继承。
一个类实现一个或者多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法
接口只有静态和final变量。
接口不能提供抽象类的实现。
interface关键字用于声明接口。
异同
1、接口和抽象类都不能被实例化 位于继承树的顶端 被其他类实现和继承
2、实现接口和继承抽象类的子类都必须实现这些抽象方法
3、接口和抽象类之间的差别非常大
4、 接口中只能包含抽象方法,不包括已经提供实现的方法, 抽象类则完全可以包含普通方法
5、接口不能定义静态方法,而抽象类可以定义静态方法
6、 接口里不包含构造器
4000
,而抽象类就可以包含,但是不是用于创建对象,而是让子类来调用这些构造器来完成抽象类的初始化操作
7、接口中不能包括初始化块 但是抽象类中可以包含初始化块
8、一个类最多只能有一个直接父类 包括抽象类,但是一个类可以直接实现多个接口,通过实现多个接口来解决Java单继承的不足
简单地说,抽象类实现了部分抽象(0到100%),而接口实现了完全抽象(100%)。
相关文章推荐
- 关于抽象类和接口之间的区别
- 关于java的几个常用关键字及抽象类和接口
- 关于抽象类 和接口的 重点
- C#关于类抽象类和接口之间的关系(Abstract)(Interface)
- 抽象类与接口的异同
- 关于抽象类和接口(转载)
- 关于接口和抽象类的区别
- 比较C#中抽象类(abstract class)和接口(interface)的异同
- 关于抽象类和接口的比较分析【更新】
- 抽象类与接口的异同
- 抽象类和接口,类的异同
- 关于接口类和抽象类的思考
- 关于抽象类和接口
- 接口和抽象类的异同
- 从面向对象设计谈接口和抽象类的异同
- 关于接口和抽象类
- 关于抽象类和接口
- 关于JAVA的OOP程序设计中抽象类和接口的区别介绍
- c#中抽象类和接口异同
- 关于抽象类和接口有什么用和怎么用