为了账号安全,请及时绑定邮箱和手机立即绑定

为什么ArrayList继承了AbstractList还要实现List接口

为什么ArrayList继承了AbstractList还要实现List接口

紫衣仙女 2018-07-14 10:59:25
为什么ArrayList继承AbstractList之后还需要实现List接口,(AbstractList已经实现了List接口)
查看完整描述

4 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

因为:

1、AbstractList实现了List接口,在其中为List接口的所有方法都给了一个默认实现

2、ArrayList继承AbstractList之后,本质上说,可以不做任何操作(因为父类已经替它做好了)

3、但是为了让ArrayList必须重新实现List中所有方法,所以ArrayList必须直接实现List接口(或重写ArrayList中所有方法),显然,JDK编写人员选择了直接实现List接口。

4、保证所有的List实现类都直接实现List中的方法,而不是继承List的其他实现类(保证子类更纯正)

5、其他……


查看完整回答
反对 回复 2018-07-14
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

涨姿势,可能对抽象类和接口之间的关系还停留在理论阶段,看着挺迷糊的,多谢

查看完整回答
反对 回复 2018-07-14
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

从语义实现上冗余了,但是从设计上是合理的,对比下面对对象设计,抽象类和接口的定义,继承和实现的定义。

ArrayList作为一个对象,首先是要符合List接口定义的,然后我们基于开闭原则,将List的一些固定行为进行抽象,所以描述ArrayList对象是实现了List接口,继承了AbstractList里面的方法。更细致的可以参考下API里面对三个类的描述。


查看完整回答
反对 回复 2018-07-14
?
qq_星河k_0

TA贡献4条经验 获得超2个赞

增加ArrayList的适应性和简单性,继承的关系,往往导致耦合度高,难以扩展,继承了抽象类,就一定要复写所有的方法,工作量大,某些工作甚至无效。如果实现了接口List,就相当简洁,实用。抽象类的

抽象类的子类,相当于模板模式,我这么理解的对不对?

查看完整回答
反对 回复 2018-07-15
  • 4 回答
  • 0 关注
  • 1955 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信