是否每个java类都隐式地从Object类继承

时间:2013-01-05 23:59:41

标签: java

  

可能重复:
  Classes that don’t inherit Object class

我想知道Java中的每个类是否隐式地从Object继承。我正在读一本说不的书,我很困惑。

4 个答案:

答案 0 :(得分:7)

那本书在撒谎。看一下Java API中的any类,你会注意到第一个父类实际上是Object

BTW:无论如何,这本书是什么?

** 修改 **

让我们首先澄清一件事:

问: 每个java类是否隐式从Object类继承?

答:如果您认为班级Object不能有超级班级“because it is the primordial class and has no direct superclass”,那么没有,因此您的图书是对的

但是,如果您考虑“the class Object is a superclass of all other classes”,并且从问题中排除(因为某个类无法继承自身),那么根据定义


根据我对语言及其规范的理解,“all class and array types inherit the methods of class Object”应该采用时间表。这意味着创建的每个对象都拥有类Object中定义的方法。出于这个原因,并且因为类Object没有超类(因为规范中没有超类!),并且因为所有类都继承了这些方法(这些方法在 any 中可用)由JVM创建的对象,然后如果一个类没有显式扩展Object(因为它不是类Object),它本身或虚拟机的超类隐式地这样做。

答案 1 :(得分:2)

引用the documentation

public class Object 
  

Class Object是类层次结构的根。每个班级都有   对象作为超类。所有对象,包括数组,都实现了   这类方法。

答案 2 :(得分:1)

这本书在一个案例中可以是正确的。 Object类不会扩展Object。但请记住其他人都这样做 见文档。 Class Object

答案 3 :(得分:1)

如您所见......类继承自Object:

http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html

public final class Class<T>
    extends Object
    implements Serializable, GenericDeclaration, Type, AnnotatedElement

将这本书扔给垃圾桶!!