lucasji
V2EX  ›  Java

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

  •  
  •   lucasji · Jan 9, 2023 · 3097 views
    This topic created in 1397 days ago, the information mentioned may be changed or developed.

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

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

    上面代码中,LinkedHashMap和HashMap都实现了Map接口。

    10 replies  •  2023-01-09 20:28:19 +08:00
    AoEiuV020CN
    AoEiuV020CN
    Jan 9, 2023❤️1
    1
    确实没啥用,我猜只是强调一下吧,
    总不能是复制粘贴不小心加上去就懒得删除了吧,
    chendy
    chendy
    Jan 9, 2023❤️1
    2
    提高可读性,强调一下自己实现了某某接口
    没有啥别的效果
    lucasji
    lucasji
    OP
    Jan 9, 2023
    3
    @AoEiuV020CN 这么看来确实是为了提高可读性,因为不仅是 JDK ,Spring 的源码里面也有这种写法。
    zjp
    zjp
    Jan 9, 2023 via Android❤️1
    4
    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
    dqzcwxb
    Jan 9, 2023
    5
    可以保证父类实现方法变更的情况下,子类不会受到影响
    nielinjie
    nielinjie
    Jan 9, 2023❤️2
    6
    是否继承父类,远没有是否实现一个接口重要。所以尽量随时随地写明是否实现一个接口。
    请参照我以前的一个回答。

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

    当你一个子类继承了 N 多个基类(多继承)/一个子类有 N 层继承(多重继承)的时候,你就知道重新声明一遍是多么明智的选择了
    就跟 python 里强调不要使用 from package import * 类似
    如果这样用,则很可能每次你找个名称的出处都要找半天它到底出自哪个包,还要检查有没有重复声明 /定义🤣
    SACKJJKLL
    SACKJJKLL
    Jan 9, 2023
    10
    我一直以为是什么高级写法,现在看来这是一种无意义的做法👀
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1013 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:11 · PVG 03:11 · LAX 11:11 · JFK 14:11
    ♥ Do have faith in what you're doing.