正所谓学而时习之,温故而知新,最近在回顾Java基础知识的过程中有了和以前不一样的理解,所以在此记录一下,注意这仅供参考哦!如果有什么理解有误的地方希望大家可以纠正,共同探讨,一起进步。
- 抽象类和接口都不能直接实例化。
- 接口只能包含方法声明和常量,抽象类中可以包含方法声明和有着具体实现的方法。
- 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
- 抽象类里可以没有抽象方法。
- 如果一个类里有抽象方法,那么这个类只能是抽象类。
- 抽象方法要被实现,所以不能是静态的,也不能是私有的。
- 接口可继承接口,并可多继承接口,但类只能单继承。
我认为Java中抽象类主要承担着封装的角色,而接口主要承担着多态的角色,接口是一种约定,实现接口的类要遵循这个约定,抽象类是一个类,主要是对一些拥有共同属性或方法的对象的一种封装。
原文
https://juejin.im/post/5d30748bf265da1b7638da24