为什么String类扩展了Object

Moh*_*dil 4 java string

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

public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence
Run Code Online (Sandbox Code Playgroud)

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

他们背后的任何逻辑原因是什么?

ada*_*shr 18

它不在官方的oracle JDK源代码中.你在看哪个版本?

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,无论您是否extends Object在源代码中编写,都没有区别.但要注意,如果你不得不扩展另一个合法的类而不是Object,那么由于Java不支持多重继承,你将陷入死胡同.

更新

OP正在查看API文档中的String声明.Java中的每个类都必须扩展Object.但是,源代码是否有所不同extends Object.

String类没有extends Object在源代码中.但是,API声明始终指示每个类都隐式扩展Object.

看看源代码.

  • 只需使用重新表述您的问题[`Character`(http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Character.java/#120)作为一个例子,它是正确的.但是,在OpenJDK 7中,他们删除了`extends Object`标识. (2认同)