为什么String类扩展了Object

时间:2013-08-30 12:41:39

标签: java string

查看String类声明,您可以看到它扩展了Object类。

public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence

明确地将extends Object写入实际不需要的地方有什么意义?

这是他们背后的任何逻辑原因吗?

2 个答案:

答案 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