查看String
类声明,您可以看到它扩展了Object
类。
public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence
明确地将extends Object
写入实际不需要的地方有什么意义?
这是他们背后的任何逻辑原因吗?
答案 0 :(得分:17)
它不在官方的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。
查看source code。
答案 1 :(得分:3)
我的猜测是你没有安装JDK源,但正在查看反编译的类文件。
在我的源文件夹中,缺少extends Object
。反编译器只会添加extends <superclass>
。但是因为在Java中,每个类都是从Object派生的,所以在String类的情况下,这将成为extends Object
。