抽象类:
- 抽象类是由abstract 修饰的类
- 不能创建实例对象
- 可以存在非抽象方法
- 里面的抽象方法可以是0个或者多个
接口:
- 接口是一种特殊的抽象类
- 里面的方法都是抽象方法(JDK1.8之后可以存在非抽象方法,但是必须用de须用default或者static修饰 详情见https://blog.youkuaiyun.com/austral/article/details/53402476)
- 接口中的方法默认是public abstract 修饰
- 接口中的成员变量默认是 public static final 类型
抽象类与接口的区别:
-
构造方法。 抽象类可以有构造方法 ,接口不可以
-
普通成员变量与方法。抽象类中的成员变量可以都是普通成员变量 接口不可以,抽象类里面的方法可以都是普通方法 接口不可以
-
抽象方法的访问权限。抽象类中的抽象方法的访问权限可以是 public protect ,而接口里的抽象方法只能是public(public abstract)
-
静态方法。抽象类中可以有静态方法 ,而在JDK1.8之前接口中不可以有静态方法
-
静态成员变量。抽象类与接口中都可以有静态成员变量 ,而抽象类中权限修饰可以是任意的 ,而接口中的只能是public static final
-
继承与实现。 一个类可以实现多个接口 但是只能继承一个抽象类。 接口不可以实现接口 但是可以多继承接口。