Set 为什么要重写Collection 里边的抽象方法?

  (首先这个问题确实很奇怪的,还有就是感谢跟我解惑的金总。)
  相信看过看多thinking in java 的童鞋都看过一句话“set 和 collection一模一样”。然后我看了源码,果然是一模一样。惊不惊喜?意不意外?
  按理说Set接口继承自Collection接口,也继承了里边的方法,再重写方法意欲何为?是不是代码重复?如果你继续跟进,会发现Collection继承自Iterable,也重写了Iterable的iterator()、spliterator()方法。还有List也重写了Collection里边的方法…我们这里就只以Set、Collection为例。
  之后看了对方法的注释,就会更加疑惑:方法相同,注释不同?难道是为了注释而重写方法?思来想去觉得有理。
  后来大佬解惑:
  Collection 只是一个接口, 表示是一组集合, 没有特点 (是否排序, 是否去重)。而Set 是有特点的,那就是 唯一,可以理解为: 不包含重复元素的 collection。对于接口, Set 接口,本身可以不需要重新定义这个接口,(例如:Set和 Collection 里面的add 接口定义 是一样的), 但是 ,重新定义, 可以写上自己 特殊的注释,对于这种接口层次的重新定义, 我觉得除了可以加自己的特殊注释外, 也可以一目了然的知道 这个接口的方法; 尤其对于JDK,并且是常用的接口,如果不写注释,并且不是那么常用的接口,可以省略 ,继承父接口方法即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值