关于子类和父类同时实现某一接口的疑惑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lucasji
V2EX    Java

关于子类和父类同时实现某一接口的疑惑

  •  
  •   lucasji 2023 年 1 月 9 日 2554 次点击
    这是一个创建于 1203 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在阅读 JDK 源码的时候,发现了很多子类在父类已经实现了某一接口的情况下,依旧选择去实现这一接口。有没有大佬能解释一下这么做的原因?是为了提升代码可读性吗?随文附上LinkedHashMap的例子:

    public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> { // 省略实现 } 

    上面代码中,LinkedHashMapHashMap都实现了Map接口。

    10 条回复    2023-01-09 20:28:19 +08:00
    AoEiuV020CN
        1
    AoEiuV020CN  
       2023 年 1 月 9 日   1
    确实没啥用,我猜只是强调一下吧,
    总不能是复制粘贴不小心加上去就懒得删除了吧,
    chendy
        2
    chendy  
       2023 年 1 月 9 日   1
    提高可读性,强调一下自己实现了某某接口
    没有啥别的效果
    lucasji
        3
    lucasji  
    OP
       2023 年 1 月 9 日
    @AoEiuV020CN 这么看来确实是为了提高可读性,因为不仅是 JDK ,Spring 的源码里面也有这种写法。
    zjp
        4
    zjp  
       2023 年 1 月 9 日 via Android   1
    https://stackoverflow.com/a/18558649
    My understanding is that they did so for documentation purposes: the authors wanted to show that ArrayList<E> is primarily a List<E>; the fact that ArrayList<E> extends AbstractList<E> is a less significant detail of its implementation.

    类似的还有 List 重新声明了 Collection 的很多方法,文档几乎没有区别
    dqzcwxb
        5
    dqzcwxb  
       2023 年 1 月 9 日
    可以保证父类实现方法变更的情况下,子类不会受到影响
    nielinjie
        6
    nielinjie  
       2023 年 1 月 9 日   2
    是否继承父类,远没有是否实现一个接口重要。所以尽量随时随地写明是否实现一个接口。
    请参照我以前的一个回答。

    接口和抽象类在实际应用中如何选择? - 聂同学的回答 - 知乎
    https://www.zhihu.com/question/314514470/answer/626587005
    fang23
        7
    fang23  
       2023 年 1 月 9 日
    帮顶,以前想过这个问题,但是没找到答案
    xiang0818
        8
    xiang0818  
       2023 年 1 月 9 日   1
    lookStupiToForce
        9
    lookStupiToForce  
       2023 年 1 月 9 日   1
    个人感觉是对现阶段 [码代码工具] 的一种妥协

    当你一个子类继承了 N 多个基类(多继承)/一个子类有 N 层继承(多重继承)的时候,你就知道重新声明一遍是多么明智的选择了
    就跟 python 里强调不要使用 from package import * 类似
    如果这样用,则很可能每次你找个名称的出处都要找半天它到底出自哪个包,还要检查有没有重复声明 /定义
    SACKJJKLL
        10
    SACKJJKLL  
       2023 年 1 月 9 日
    我一直以为是什么高级写法,现在看来这是一种无意义的做法
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2703 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 59ms UTC 04:00 PVG 12:00 LAX 21:00 JFK 00:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86