Java的抽象类和接口
最近在学习Spring中,一个同学把接口的实现层,添加了abstract,导致Spring的配置文件没有办法创建对象,通过这点我联想到当时学习Java的时候,abstract和interface的区别,虽然abstract用得不多,但是和interface还是有很大的不同之处。
表格展示:
抽象类 | 接口 |
---|---|
抽象类不能实例化(即创建对象) | 接口不能实例化(即创建对象) |
抽象类需要被子类继承 | 接口需要类实现 |
抽象类中可以声明方法也可以实现方法 | 接口中只能声明方法 |
接口中的变量是公共静态变量 | 抽象类中的变量是普通变量 |
抽象类的抽象方法必须全部被实现,否则子类只能为抽象类 | 接口中的方法也必须实现,否则实现类只能为抽象类 |
抽象方法只能声明,由子类实现 | 接口的方法只能声明不能实现,由实现类实现 |
抽象方法不能为静态或者私有 | 接口的方法没有限制 |
接口可以继承多个接口 | 类只能单一继承 |
抽象类表示的是,这个对象是什么。而接口表示的是,这个对象能做什么。
参考文章:https://www.cnblogs.com/mmzs/p/8185103.html