请问jdk中HashMap既然继承了AbstractMap,为何还要实现Map接口,从设计上说重复的实现接口有什么好处

Java地带@道圣科技
企业官方账号
2011-09-21 09:32:11
1. AbstractMap<K,V> implements Map<K,V>
2. HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>


请问jdk中HashMap既然继承了AbstractMap<K,V>,为何还要实现Map<K,V>接口,
从设计上说重复的实现接口有什么好处吗?
...全文
280 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
哦,好像有点明白了,但还得深入的去理解下,谢谢各位了
scrack 2011-09-21
  • 打赏
  • 举报
回复
LZ做事很认真 我想JDK这样写 就是想表示 父接口为Map 觉得没有实际意义的
龙四 2011-09-21
  • 打赏
  • 举报
回复
直观,直观,看代码的时候直观
绝世酱油瓶 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yk0025 的回复:]

引用楼主 yk0025 的回复:
1. AbstractMap<K,V> implements Map<K,V>
2. HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>


请问jdk中HashMap既然继承了AbstractMap<K,V>,为何还要实现Map<K,V>接口,
从设计上说重复的实现接口有什么好处吗?
……
[/Quote]
呵呵 LZ蛮细心的 我还真没注意过这种问题。。。。学习。。。不过我猜那只是JDK上用来描述的
我刚才看了下很多类都是以那种形式写的
从父子关系来说,父类已经实现了接口,子类就应该不需要重复实现了
  • 打赏
  • 举报
回复
[Quote=引用楼主 yk0025 的回复:]
1. AbstractMap<K,V> implements Map<K,V>
2. HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>


请问jdk中HashMap既然继承了AbstractMap<K,V>,为何还要实现Map<K,V>接口,
从设计上说重复的实现接口有什么好处吗?
[/Quote]
这个自然知道,我想要知道的是:
子类父类实现同一接口有什么作用?
简单的说,下面这样的代码:
B implements A

C extends B implements A

红色的代码有什么用?
绝世酱油瓶 2011-09-21
  • 打赏
  • 举报
回复
继承是继承类。。。实现是实现接口
淡定的峰哥 2011-09-21
  • 打赏
  • 举报
回复
你看一下map家族的源码,再比较一下就会发现
AbstractMap 是implements Map的,它里面实现了部分功能,再所有的Map的子类中都不需要重写了
HashMap 是继承了AbstractMap 并且implements Map,即HashMap完全可以只继承AbstractMap就可以
而TreeMap 是继承了AbstractMap 并且implements SortedMap,但是TreeMap只继承AbstractMap是不能代表SortedMap的
dxqrr 2011-09-21
  • 打赏
  • 举报
回复
我也想问同样的问题
chenliuyang 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenliuyang 的回复:]

是开发人员没注意到的问题吧, 实现不实现无所谓反正父类实现了
[/Quote]

说错了, 他那样实现肯定是有他道理的, 方便了在代理时候的使用。
chenliuyang 2011-09-21
  • 打赏
  • 举报
回复
是开发人员没注意到的问题吧, 实现不实现无所谓反正父类实现了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧