没有java.lang.Object作为超类的类

时间:2016-02-25 10:37:07

标签: java oop object inheritance

我们知道默认情况下,每个类最终都从java.lang.Object类继承,这就是为什么像toString这样的方法可以随时用于每个类的原因。因此,泛型类有效如下:

public class Foo extends java.lang.Object {

public Foo() {super(); }
}

但是,是否可以创建一个不会自动从Object类继承的类,因此没有超类?如果是这样,会产生什么影响?

3 个答案:

答案 0 :(得分:3)

我们不能在没有java.lang.object作为超类的情况下编写课程。编译器会自动扩展对象类。只有对象类本身和接口是不扩展对象类的接口。

答案 1 :(得分:2)

不,那是不可能的。来自documentation

  

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

答案 2 :(得分:1)

我不相信你可以拥有一个不继承Object的班级。引自Object as a Superclass ..

  

java.lang包中的Object类位于顶部   类层次结构树。每个班级都是直系或间接的后代,   Object类的。您使用或编写的每个类都继承   Object的实例方法。你不需要使用任何这些方法,   但是,如果您选择这样做,您可能需要使用代码覆盖它们   这是特定于你的班级。

如果没有明确说明继承,则隐含地说明。现在,继承显然不会形成一个循环。 Object类是唯一一个继承自nobody的类,它是层次结构的顶层。