从 Java 8 开始,接口现在支持静态方法。此外,它们可以有具体的实例方法,但不能有实例字段。
在早期的 Java 版本中,由于以下原因,接口不能包含静态方法:
静态方法不能被重写,因为它们是在编译时解析的。当编译器无法确定对象的具体类型并因此无法解析要调用的方法时,动态分派用于实例方法。但是,由于静态方法需要已知的类,因此可以静态解析它们,从而无需动态调度。
换句话说,如果超类和子类都具有具有相同签名的静态方法,则子类的方法将始终首先调用,覆盖超类的方法。然而,这在概念上是多余的,因为人们总是可以指定包含所需版本的静态方法的类。
关于强制执行类似构造函数的方法的额外担忧IXMLable,请考虑以下事项:
以上是为什么 Java 8 之前的 Java 接口不能有静态方法?的详细内容。更多信息请关注PHP中文网其他相关文章!