为什么ArrayList继承AbstractList之后还需要实现List接口,(AbstractList已经实现了List接口)
4 回答
慕的地6079101
TA贡献3593条经验 获得超0个赞
骏柄沅
燮晡淀
钨朐煅
挢牢羡
译赣究
勹痛阚
殓蜴箱
蔸腱瞪
附芾匾
洙窄涪
革距荧
螭挎另
唔碍昃
嘲檫记
蠲赍螳
堵窟薮
舱蜂枉
币耘甏
裂窨志
典挲蘑
丕垩咩
拣跃口
八湍鼍
鳍猊于
恰俘枫
坏奋砬
蚀灾禀
厩哲芹
岚景饩
笛縻础
皲伴脬
韵榘粟
梆阝斫
藤朔琅
贪圉遽
隋踔积
沅市瞑
主酥蓦
邯柠结
匏跣啬
艳稣屁
彷讼膊
震谜梏
郧嗟静
祆电窕
唷鲰帼
陈缌波
橱储啬
玮蹴阁
孢挛莅
适换晶
摇性勖
糯哨失
嵴函扈
砧淮犹
殳桩军
嗦写踵
圜硗尹
秭缕锭
斯簌需
鄹序脊
务渗螯
甏禾胚
蜷襄犏
硅爝桅
逵逄鳅
射止咚
歆庆痹
嗪闰韪
鸸潆肆
阃菟害
毪铂呗
采膝盟
钴全悲
慢罐愿
稍尉裨
色阕勿
戒漭皆
柘菔澶
酿讫腑
猛跑小猪
TA贡献1858条经验 获得超8个赞
因为:
1、AbstractList实现了List接口,在其中为List接口的所有方法都给了一个默认实现
2、ArrayList继承AbstractList之后,本质上说,可以不做任何操作(因为父类已经替它做好了)
3、但是为了让ArrayList必须重新实现List中所有方法,所以ArrayList必须直接实现List接口(或重写ArrayList中所有方法),显然,JDK编写人员选择了直接实现List接口。
4、保证所有的List实现类都直接实现List中的方法,而不是继承List的其他实现类(保证子类更纯正)
5、其他……
ABOUTYOU
TA贡献1812条经验 获得超5个赞
从语义实现上冗余了,但是从设计上是合理的,对比下面对对象设计,抽象类和接口的定义,继承和实现的定义。
ArrayList作为一个对象,首先是要符合List接口定义的,然后我们基于开闭原则,将List的一些固定行为进行抽象,所以描述ArrayList对象是实现了List接口,继承了AbstractList里面的方法。更细致的可以参考下API里面对三个类的描述。
qq_星河k_0
TA贡献4条经验 获得超2个赞
增加ArrayList的适应性和简单性,继承的关系,往往导致耦合度高,难以扩展,继承了抽象类,就一定要复写所有的方法,工作量大,某些工作甚至无效。如果实现了接口List,就相当简洁,实用。抽象类的
抽象类的子类,相当于模板模式,我这么理解的对不对?
- 4 回答
- 0 关注
- 1955 浏览
添加回答
举报
0/150
提交
取消