◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
接口继承不扩展方法的意义
在一个场景中,我们遇到如下代码:
interface a { void xx(); string yy(); } interface b extends a { }
对于 java 初学者来说,一个疑问油然而生:既然接口 b 继承了所有 a 的方法,在后续扩展中可以直接使用 a,那么创建 b 有什么意义?
其实,b 继承 a 不仅仅只是方法的继承,还意味着:
类型标记
b 的存在给出了一个类型标记。对于从 b 派生的类型,可以在类型过滤时派上用场。例如,我们可以编写代码:
List<A> listA = new ArrayList<>(); List<B> listB = new ArrayList<>(); if (listA instanceof List<B>) { // 类型转换安全 }
如果没有 b 接口,类型过滤将变得困难,因为 a 中的方法会在 list 和 list 中都可用。
通过引入 b 接口,我们可以用它来标记具体派生类型,以便在运行时更精确地进行类型检查和转换。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。