百度过这个问题,也在csdn中看到过相同的提问,但所有解释感觉还是没法说服我。
我看过以下两种写法:
1.interface A 继承interface B
2.interface A的重新声明interface B的方法
这两种写法的意义何在?相同的需求,直接让实现A的实体类同时实现没有实现B接口的A和接口B不就行了么?
举例来说,我看到java源码中Collection接口实现了Iterable接口,然后重新声明了iterator方法。
为什么不直接让List同时实现Collection和Iterable接口?
我看过以下两种写法:
1.interface A 继承interface B
2.interface A的重新声明interface B的方法
这两种写法的意义何在?相同的需求,直接让实现A的实体类同时实现没有实现B接口的A和接口B不就行了么?
举例来说,我看到java源码中Collection接口实现了Iterable接口,然后重新声明了iterator方法。
为什么不直接让List同时实现Collection和Iterable接口?
比如甲承诺实现interface A里面定义的所有公共接口,
乙承诺实现interfaceB 里面定义的所有公共接口,
丙承诺用interfaceC 实现interfaceA 和 interfaceB 里面所有的公共接口,也就是interface C implements InterfaceA, InterfaceB所以甲的用户只关心interfaceA,
乙的用户只关心interfaceB,
丙的用户则需要关心 interfaceA, interfaceB 和 interfaceC
你有没有留意这两个iterator() 接口的注释是不同的?Iterable
Collection
为什么不让丙直接实现A,B,C,为什么还需要C实现A和B?
你有没有留意这两个iterator() 接口的注释是不同的?Iterable
Collection
有啥具体的不同还请解释下,如果Collection不重新声明iterator()会有什么问题吗?