0

プログラムで、クラスを拡張せずにクラスを 1 つだけ持つとします。例えば

public class Point {
    int x, y;
}

コンパイラはデフォルトのコンストラクタを作成し、これに従って super() メソッドを呼び出しますhttp://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8.9

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

Q: 私が理解しているように、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

そのリンクから 1 つのスニペットを取得するには:

すべてのクラスには少なくとも 1 つのコンストラクターがあります。クラスが明示的に何も宣言していない場合、Java コンパイラはデフォルト コンストラクタと呼ばれる引数のないコンストラクタを自動的に提供します。この既定のコンストラクターは、クラスの親の引数なしのコンストラクターを呼び出すか、クラスに他の親がない場合は Object コンストラクターを呼び出します。親にコンストラクターがない場合 (Object にコンストラクターがある場合)、コンパイラーはプログラムを拒否します。

于 2013-08-12T12:07:30.533 に答える
1

デフォルトのコンストラクターはObjectで、すべての Java オブジェクトが継承します。

于 2013-08-12T12:07:22.123 に答える
0

ObjectJava のすべてのスーパー タイプです。Super()それはクラスを呼び出しますObject

于 2013-08-12T12:10:34.717 に答える
0

Java の各クラスは暗黙的にオブジェクト クラスを拡張します。したがって、任意のクラスのコンストラクターからいつでも super() を呼び出すことができます。

繰り返しますが、Object クラスには明示的なコンストラクターはありません。コンパイラはデフォルトのものを作成し、Object クラスのデフォルトのコンストラクタはオブジェクト自体を作成します

于 2013-08-12T12:10:48.953 に答える
0

Java では、すべてのクラスにスーパー クラスがあります。明示的に指定されていない場合は、Object

于 2013-08-12T12:07:35.110 に答える
0

すべての Java クラスは Object から拡張されるため、クラスを拡張しない場合は、super によって Object クラスのコンストラクターを呼び出します。

于 2013-08-12T12:08:34.903 に答える