当前位置: 首页 > 面试题库 >

Java中的隐式超级接口?

相云
2023-03-14
问题内容

因此我们都知道所有类都隐式扩展了Object。接口怎么样?是否存在隐式超级接口?我说有。以下代码编译:

java.io.Serializable s1 = null;
java.io.Serializable s2 = null;

s1.equals(s2);

equals方法不是在Serializable中声明的,而是在Object中声明的。由于接口只能扩展其他接口,并且Object是类,而不是接口,因此必须存在一些要扩展的隐式接口。然后,Object该类必须隐式实现此隐式接口(哇,这很奇怪)。

所以,问题是,这有多正确?


问题答案:

由于接口只能扩展其他接口,并且Object是类,而不是接口,因此必须存在一些要扩展的隐式接口。

否。引用Java语言规范:

如果接口没有直接的超 接口 ,则 该接口隐式声明 带有签名s 的公共抽象成员方法 m,返回类型r,并引发 与每个
带有签名s的 公共实例方法 m ,返回类型r和throws子句t 对应的 子句t 在Object中声明
,除非接口显式声明了具有相同签名,相同返回类型和兼容throws子句的方法。如果在Object中将m声明为final的情况下,接口明确声明了这样的方法m,则是编译时错误。

这个和您的“隐式超级接口”之间的区别在于,它Object具有许多final和protected方法,并且您不能在接口中使用这些修饰符。



 类似资料:
  • 问题内容: 我是Java的新手,只是学习OOP概念。请检查我的代码。我收到以下错误。- 隐式超级构造函数未定义。 问题答案: 您收到此错误,因为BoxSuper没有no-arg构造函数。在BoxSub中的构造函数调用期间,如果未定义超级构造函数调用,Java会尝试自动调用no- arg super()构造函数。 在BoxSuper中定义超级构造函数调用,如下所示: 或在BoxSuper中定义无参数

  • 我对GWT是新手。我不知道如何启动超级开发模式。我需要一步一步的详细解释。 但我不明白这一点。

  • 假设我有这个接口A: “类型B不能是C的超级接口;超级接口必须是接口” 如果这个类的层次结构是有效的,那么任何人现在都可以了,还是我应该反过来做?

  • 本文向大家介绍接口的隐式实现是什么?何时在C#中使用接口的隐式实现?,包括了接口的隐式实现是什么?何时在C#中使用接口的隐式实现?的使用技巧和注意事项,需要的朋友参考一下 C#接口成员可以显式或隐式实现。 隐式实现在成员名称之前不包括要实现的接口的名称,因此编译器会推断出该名称。成员将公开显示,并且在将对象转换为混凝土类型时可以访问。 方法的调用也没有不同。只需创建该类的对象并调用它即可。 如果在

  • 在当前的jOOQ版本中,有一个隐式连接表的功能。 它允许使用表上定义的外键约束进行“导航”。 它是否也适用于表?例如,如果我有

  • 本文向大家介绍详解C#中对于接口的实现方式(隐式接口和显式接口),包括了详解C#中对于接口的实现方式(隐式接口和显式接口)的使用技巧和注意事项,需要的朋友参考一下 C#中对于接口的实现方式有隐式接口和显式接口两种: 隐式地实现接口成员 创建一个接口,IChinese,包含一个成员 Speak;我们创建一个类Speaker,实现接口Chinese 这个就是隐式实现接口。 隐式实现调用方法如下: 都可