接口和抽象类的区别

相同点:

1. 都位于继承的顶端,用于被其他实现或继承。

2. 都不能被实例化。

3. 都可以定义抽象方法,其子类/实现类都必须覆写这些抽象方法。

不同:

1. 接口没有构造方法,抽象类有构造方法。

2. 抽象类可包含普通方法和抽象方法,接口只能包含抽象方法(java8之前)。

3. 一个类只能继承一个直接父类(可能是抽象类),接口是多继承的并且只支持一个类实现多个接口。

4. 变量:接口里默认是pubic static final,抽象类是默认包权限。

5. 方法:接口里默认是public abstract,抽象类默认是默认包访问权限。

6. 内部类:接口里默认是public static,抽象类默认是默认包访问权限。

 

如果接口和实现类都可以完成的功能,尽量使用接口,面向接口编程。

posted @ 2017-01-08 10:16  wenxudong  阅读(166)  评论(0编辑  收藏  举报