查看String
类声明,您可以看到它扩展了Object
类。
public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence
extends Object
在实际上不需要的地方明确写有什么意义?
他们背后有什么合乎逻辑的原因吗?
它不在官方的 oracle JDK 源代码中。你在看哪个版本?
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
无论哪种方式,您是否extends Object
在源代码中编写都不会产生影响。但请注意,如果您必须扩展另一个合法类而不是Object
,您将陷入死胡同,因为 Java 不支持多重继承。
OP 正在查看 API 文档中的 String 声明。Java 中的每个类都必须并且确实扩展 Object。但是,源代码是否说extends Object
.
该类在源代码String
中没有。extends Object
但是,API 声明始终表明每个类都隐式扩展 Object。
看看源代码。
我的猜测是您没有安装 JDK 源代码,但正在查看反编译的类文件。
在我的源文件夹中,extends Object
缺少 。反编译器只会添加extends <superclass>
. 但是由于在 Java 中,每个类都根据定义从 Object 派生,extends Object
因此 String 类将成为这种情况。