0

如果我们在我们的程序中只有一个类,而不扩展任何类。例如

public class Point {
    int x, y;
}

编译器创建默认构造函数并根据此http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8.9调用 super() 方法

public class Point {
    int x, y;
    public Point() { 
    super(); 
    }
}

问:据我了解 super(); 正在调用超类的默认构造函数,但在这种情况下我们没有超类,那么在这种情况下调用 super() 是什么?

4

7 回答 7

5

所有java类都扩展自Object

于 2013-08-12T12:07:11.633 回答
4

你确实有一个超级班。Java 中的所有类都会自动扩展 java.lang.Object,无论您是否指定它。

见这里:http ://docs.oracle.com/javase/6/docs/api/java/lang/Object.html

要从该链接中获取一个片段:

所有类都至少有一个构造函数。如果一个类没有显式声明,Java 编译器会自动提供一个无参数构造函数,称为默认构造函数。此默认构造函数调用类父类的无参数构造函数,如果类没有其他父类,则调用 Object 构造函数。如果父级没有构造函数(Object 确实有),编译器将拒绝该程序。

于 2013-08-12T12:07:30.533 回答
1

默认构造函数是Object,所有 Java 对象都从它继承

于 2013-08-12T12:07:22.123 回答
0

所有 Java 类都从 Object 扩展而来,因此如果您不扩展任何类,那么您将通过 super 调用 Object 类的构造函数。

于 2013-08-12T12:08:34.903 回答
0

Object是java中all的超类型。Super()它会调用Object类。

于 2013-08-12T12:10:34.717 回答
0

Java 中的每个类都隐式地扩展了 Object Class。所以你总是可以从任何类的构造函数中调用 super() 。

同样在 Object 类中没有显式构造函数。编译器创建一个默认的,Object 类的默认构造函数创建对象本身

于 2013-08-12T12:10:48.953 回答
0

在java中,每个类都有一个超类。如果没有明确给出,那么它是Object

于 2013-08-12T12:07:35.110 回答