gpt4 book ai didi

Java:迭代器、可迭代器——接口(interface)还是抽象类?

转载 作者:行者123 更新时间:2023-11-29 03:33:23 24 4
gpt4 key购买 nike

我的问题很简单,都是从无意中看到Iterable接口(interface)的源码开始的。我以为我会发现这个接口(interface)有一个名为“AbstractIterator”或类似名称的抽象类的成员,但事实证明它是一个接口(interface)。

为什么?为什么迭代器不是抽象类?接口(interface)用于定义某种特征——这就是为什么“能”结尾出现在这么多接口(interface)上的原因。但事实证明,java 似乎持有不同的观点。请解释...:)

P.s:在我看来,List、Set 等也应该是抽象类 - 所以我的问题也是关于它们的......

最佳答案

Iterator 的每个实现对于它迭代的集合都是唯一的。这些不是足够的公共(public)代码来保证抽象基类。

也就是说,接口(interface)的使用比抽象类的限制要少得多。请记住,在 Java 中,一个类只能扩展一个基类。因此,如果这些接口(interface)是抽象类,实现者将无法扩展任何其他类。使用接口(interface)叶为实现者提供了完整的类层次结构自由。

有一个接口(interface)和一个抽象类是很常见的。这种组合允许完全自由地实现接口(interface),但在实现可以使用抽象类的情况下允许代码重用。

关于Java:迭代器、可迭代器——接口(interface)还是抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16814385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com