2

Oracleドキュメントに記載されているクラスのメンバーでない場合、コンストラクターとは何と呼びますか: http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

4

6 に答える 6

5

「メンバー」という用語は、便宜上コンストラクターを除外するために定義されたと思います。コンストラクターは、パブリック コンストラクターであっても継承されません。メンバーは継承されます (静的および/またはプライベートでない限り)。継承のルールについて話すとき、常に「コンストラクター以外のメンバー」と言わなければならないのは厄介です。

Java 言語仕様、§8.2から:

コンストラクター、静的初期化子、およびインスタンス初期化子はメンバーではないため、継承されません。

コンストラクターを「コンストラクター」と呼ぶだけです。

于 2013-01-24T20:22:04.120 に答える
3

オブジェクトの作成後に呼び出される、すべてのクラスが持つ特別なメソッドです。JVMinvokespecialでは、それを使用して呼び出されます。それをspecialメソッドと呼びましょうか?

Javaには特別なメソッドが1つしかないため、すべて「コンストラクター」と呼ばれます

于 2013-01-24T20:24:18.310 に答える
1

ドキュメントが言っているのは、コンストラクターがデフォルトで継承されないということだけです。コンストラクターはメモリ ヒープ内のオブジェクトの構築時に呼び出されるメソッドであるため、スーパー クラスから継承するサブクラスを作成すると、デフォルトではスーパー クラスのコンストラクターは呼び出されません。

たとえば、クラスVehicleとサブクラスCarがある場合、Vehicleコンストラクターは次のようになります。

public Vehicle(String vehName) {
    this.vehName = vehName;
}

次に、クラスが classCarを継承しても、上記のコンストラクターのようVehiclevehNameメンバー (フィールド) は設定されません。

したがって、次のようなことを行う必要があります。

public Car(String vehName) {
    super(vehName);
}

それが役立つことを願っています

于 2013-01-24T20:27:44.863 に答える
-1

コンストラクタは、クラスと同じ名前のメソッドです。クラスのオブジェクトを初期化するために使用されます。それは行動に暗示的です。パラメトリック コンストラクターは、異なる値でオブジェクトを初期化します。

于 2015-09-06T11:03:40.890 に答える
-1

コンストラクターは、そのクラスの新しいインスタンスを作成するために使用されるクラスにあるメソッドです。クラスのメンバーであることは、問題のアイテムがクラスにあることを意味します。

于 2013-01-24T20:31:06.213 に答える