Oracleドキュメントに記載されているクラスのメンバーでない場合、コンストラクターとは何と呼びますか: http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
6 に答える
「メンバー」という用語は、便宜上コンストラクターを除外するために定義されたと思います。コンストラクターは、パブリック コンストラクターであっても継承されません。メンバーは継承されます (静的および/またはプライベートでない限り)。継承のルールについて話すとき、常に「コンストラクター以外のメンバー」と言わなければならないのは厄介です。
コンストラクター、静的初期化子、およびインスタンス初期化子はメンバーではないため、継承されません。
コンストラクターを「コンストラクター」と呼ぶだけです。
オブジェクトの作成後に呼び出される、すべてのクラスが持つ特別なメソッドです。JVMinvokespecial
では、それを使用して呼び出されます。それをspecial
メソッドと呼びましょうか?
Javaには特別なメソッドが1つしかないため、すべて「コンストラクター」と呼ばれます
ドキュメントが言っているのは、コンストラクターがデフォルトで継承されないということだけです。コンストラクターはメモリ ヒープ内のオブジェクトの構築時に呼び出されるメソッドであるため、スーパー クラスから継承するサブクラスを作成すると、デフォルトではスーパー クラスのコンストラクターは呼び出されません。
たとえば、クラスVehicle
とサブクラスCar
がある場合、Vehicle
コンストラクターは次のようになります。
public Vehicle(String vehName) {
this.vehName = vehName;
}
次に、クラスが classCar
を継承しても、上記のコンストラクターのようVehicle
にvehName
メンバー (フィールド) は設定されません。
したがって、次のようなことを行う必要があります。
public Car(String vehName) {
super(vehName);
}
それが役立つことを願っています
コンストラクタは、クラスと同じ名前のメソッドです。クラスのオブジェクトを初期化するために使用されます。それは行動に暗示的です。パラメトリック コンストラクターは、異なる値でオブジェクトを初期化します。
コンストラクターは、そのクラスの新しいインスタンスを作成するために使用されるクラスにあるメソッドです。クラスのメンバーであることは、問題のアイテムがクラスにあることを意味します。