如题
解决方案 »
- 小问题,求真像,谢谢。
- 请问JAVA中除了String的substring截取字符串外,还有没有更快速截字符串的方法?
- jsp从html控件获取值传过去
- 求一简单的正则表达式
- 异常问题
- 【首次使用 eclipse 感觉不错,还不是很习惯,拜托给些教程 谢谢!】
- 如何定位frame在屏幕中的显示位置?
- 关于synchronized(object)块中的object对象
- java中如何进行4舍5入
- 点击按钮添加Item到List的实现
- 列车售票系统,打印车票应该用什么技术好呢?
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
HashMap 继承自 AbstractMap, 既然父类实现了 Map 接口,子类当然也实现了Map接口。 不这样才奇怪呢!
HashMap需要使用AbstractMap类的方法,所以继承AbstractMap
就这样感觉好像是实现了两次Map接口
为什么都要先实现Map接口呢?
因为接口可以说是一种统一协议,既然你要用我的东西,必须先遵守我的这个协议(个人见解)
未来的日子里,如果AbstractMap类被废弃,HashMap是谁的子类?它什么也不是
如果HashMap先实现Map接口,不管AbstractMap存不存在,我都是遵循协议生存,有AbstractMap的时候HashMap
可以多用几个方法,没有他,HashMap少用几个方法,或者自己写。
然后你愿意继承什么继承什么!包括继承同样
实现Map接口的类!
不过我感觉这个问题似乎还是没有找到根源
有的Map继承了AbstractMap类,如: AttributeMap, ConcurrentHashMap, NavigableSubMap等等
但是没有直接实现Map接口
有的类像HashMap一样,既继承自已经实现Map的类,又直接实现了Map接口
如: IdentityHashMap, WeakHashMap, SubMap等等
如果AbstractMap类被废弃,HashMap是谁的子类?
但是在java API中找不到关于任何要废弃该类的意思
Sun这样做似乎另有用意继续等待中...
猜测的结果符合你的思想就可以说是对的,也就是你所认同的
首先一个类要有一个接口的功能就要实现它(这个类是独自存
在的,没有继承其他类,不依赖父类,有父类没父类我都可以
用,因为我实现了接口,即使继承了一个同样实现接口的类,
也和我没什么关系,只是我可以使用我所继承类的方法)或是
继承实现接口的类(虽然这个类也可以使用接口的功能,但这
种继承依赖父类,就是当父类不存在的时候,子类也没有存在
的必要,)。
有的时候按照中国的文化很难明白外国人是怎么想的
大家都觉得父与子的关系比遵循协议更重要,子继承父天经地义的正确,
其实计算机不知道你什么父什么子的这种关系有多密切,在原则的世界里,
想用我的东西,就要先满足我的要求(协议),剩下的你愿意是
谁的儿子就是谁的儿子!------这样就出现了有的类先实现接口,
然后也凑巧继承了实现接口的其他类,这个父类也只是子类完成需
求的一个工具,不存在伦理关系!
第二个:有的类直接继承父类,而拥有了一些父类实现接口的方法。
这样子类只是拿来用你父类的东西,其他的事情子类什么也不管,子
类不需要知道父类实现什么什么接口,子类也不需要实现什么什么接口!
你父类有,我就能用!如果父类废弃那么
他的这个子类没有存在的意义,一样的被废弃。和他通过父类实现接
口没有关系,再说那也不是你子类实现的,只是你可以直接拿来用!两种不同的方式也只是解决不同的业务需求,解决同一件事情的方法有很多
上面的也只是两种而已,根据情况选择用那种!你要是编写自己的类和接口
的话,在不同的业务需求上也会有以上的不同选择,找更好的去做!至于为什么
这么做也只有SUN知道,只有它才能了解业务需求是什么样的,怎么继承或者实现
才能满足多数人的需求!很惭愧,我一中国人中文学得这么滥!可能不是很明白!见谅以上仅代表个人意见
这些也都实现了Map接口
而如果单是extends AbstractMap,字面上体现不出这一点。
毕竟,绝大多数java程序员更关心一个类是否是一个Map,而很少关心一个类是否是一个AbstractMap。不光是Map家族,List,Set也都一样,ArrayList继承AbstractList又实现List,HashSet继承AbstractSet又实现Set,等等。呵呵。