在JLS和JVM规范中,都有一种语言引用了类的直接超接口。这种类的直接超接口的概念令人困惑,因为类不能扩展接口。
例如,来自JLS的第9节:
一个类必然实现其直接超类和直接超接口所做的所有接口。
来自JVM规范的第5.4.3.2节:
否则,字段查找将递归地应用于指定类或接口C的直接超接口。
虽然在JLS的第9.1.3节中,直接超接口的定义为
如果提供了extends子句,则声明的接口会扩展其他每个命名接口,因此会继承其他每个命名接口的成员类型,方法和常量。这些其他命名接口是声明的接口的直接超接口。
并严格声明为
给定I(n≥0)的(可能是通用的)接口声明,接口类型I的 直接超接口 是extends子句中给出的类型如果存在扩展条款,则声明我。
在这两个定义中,直接超接口的概念应用于接口类型,而不是类类型。
那么类的直接超接口是什么意思?
答案 0 :(得分:4)
直接超级接口是类直接实现的所有接口。
例如,如果
class X implements Y,Z
Y& Z是X类的直接超级接口。
除了实现其直接超级接口外,类还间接实现其直接超类实现的所有接口以及其直接超级接口扩展的所有接口。
类声明中的可选implements子句列出了接口的名称,这些接口是要声明的类的直接超接口。