- 首先无论是接口还是抽象类都是抽象的实现方式,Java的特性----封装、继承、多态,而抽象类、接口就分别对应了继承和多态。当然这只是一种片面的对应。
- 接口是对某(些)方面的抽象,仅仅作为面向接口(对象)开发的契子,只暴露接口,隐藏具体的可能是复杂的实现,这应该是Java的核心思想了。当然抽象类有相同的作用,只是抽象类的抽象是父类(基类)和子类的关系,是一种叠加的关系,也就是说子类可以在基类的基础上去增加新的功能,这是使用接口还是继承的最主要区别。
- Java不允许多继承,但是可以通过实现多个接口来弥补这个“缺口”。说是缺口也不完全正确,从语言词汇定义的角度出发,继承是比较清晰的父子关系,也就是is_a的关系,一种东西的定义最好不要既是这个,又是那个,非常容易混淆和模糊。接口是对行为的抽象,多实现接口是对功能的扩展。
- 接口和抽象类都不能被实例化,只有实现了所有的定义,才能被实例化。
- 接口不包含具体的实现,只包含方法的定义,并且成员方法都是public abstract,成员变量都是public static final,必须赋初值;而抽象类可以包含具体实现,可以有私有方法和属性。
- 继承抽象类后,子类如果不实现方法,仍然是抽象类。
Java implements和extends的区别
最新推荐文章于 2021-07-28 09:29:25 发布