| English | 意味 |
|---|---|
| default constructor/dɪˈfɒlt kənˈstrʌktə/ | デフォルトコンストラクタ |
パラメータ付きコンストラクタは引数なしコンストラクタを提供しない
- Student は Student(String n) のみを宣言しています。new Student("Ada") は正常に動作しますが、new Student() には対応するコンストラクタがありません。
- Javaは、 none declared when none is declared. To allow both calls, explicitly write Student() and Student(String n).
新しいオブジェクトのセットアップ
- コンストラクタは、
newを用いてオブジェクトが作成された際に実行され、初期状態を設定します。クラスと同じ名前を持ち、返り値型を持たず(voidも含まない) public Student(String n) { name = n; score = 0; }その役割:新しく作られたオブジェクトに適切な初期値を割り当てること。
コンストラクタのパラメータ
- パラメータ を使用すると、各新しいオブジェクトが独自の値から始まります。
new Student("Ada")は"Ada"をコンストラクタのnパラメータに渡します。 - 内部では、
name = n;が引数をインスタンス変数にコピーします。各成功したnew式は、引数が同一であっても別個のオブジェクトを作成します。異なる引数でも、コンストラクタがそれらを無視または正規化する場合、必ずしも異なるフィールド値が生成されるわけではありません。
new Student("Ada") の2回の実行は、引数が等しいため同じオブジェクトを指します。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
各成功した new 式は独立したオブジェクトを生成します。引数が等しいからといって、参照が等しくなるわけではありません。
コンストラクタのオーバーロード
- クラスには異なるパラメータリストを持つ複数のコンストラクタが存在できる——オーバーロード。
Student(String n)とStudent(String n, int s)はどちらも有効です。 - Java はあなたの
new引数と一致するものを選択します。これにより、呼び出し側はオブジェクトを構築する柔軟な方法を提供されます。
コンストラクタは初期状態を設定します
新しい各オブジェクトはコンストラクタの引数によって設定されます。
コンストラクタには...
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
クラスと同じ名前、返り値の型なし — void でさえもありません。
コンストラクタはいつ実行されますか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
new はコンストラクタを呼び出してオブジェクトを構築します。
コンストラクタを書かない場合、Java はデフォルトの引数なしコンストラクタを提供します。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
しかし、任意のコンストラクタを書くと、その無料のデフォルトは失われます。
引数付きのコンストラクタを定義すると、new Student() は依然として自動的に機能します。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
無料のデフォルトは消滅しました;必要であれば引数なしコンストラクタを書いてください。
異なる引数リストを持つ2つのコンストラクタを書くことは...の例です
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
同じ名前、異なる引数=オーバーロード。
デフォルトコンストラクタ
- コンストラクタを何一つ書かない場合、Java は引数なしの隠蔽されたデフォルトコンストラクタを提供します。フィールドにはまずデフォルト値(
0、false、null)が設定され、その後明示的なフィールド初期化子によって他の初期値を設定できます。 - しかし、いかなるコンストラクタを書くと、この無料のデフォルトは消滅します。したがって、引数なしコンストラクタおよびパラメータ付きコンストラクタの両方が必要な場合は、両方とも書く必要があります。
コンストラクタはクラス名を持ち、返り型を持たない——voidを記述すると通常のメソッドとなり、コンストラクタではない。 また、いずれかのコンストラクタを定義すると、Javaは無料の引数なしのデフォルトを提供しなくなる。new Student()Still desired的话,必须自己编写该构造函数。
Order the steps used to evaluate new Student("Ada").
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
The supplied argument selects a matching constructor; declaring it does not also create a no-argument constructor.
Counterにはprivate int value = 7;があり、明示的なコンストラクタがvalue = 9;を割り当てます。構文後、値は直ちに何になりますか?
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
フィールド初期化子では 7 が割り当てられ、その後コンストラクタ本体で 9 が割り当てられる。
Student のための2つのコンストラクタ:
public Student(String n) { name = n; score = 0; }public Student(String n, int s) { name = n; score = s; }new Student("Ada")→ 得点0;new Student("Bo", 75)→ 得点75。
の推論を新しいケースへ適用せよ
class Counter { private int value = 7; }と、他は同一で明示的なコンストラクタがvalue = 9;を割り当てるクラスを比較します。前者はフィールド初期化子の後で7 で始まり、後者は9 で完了します。- フィールドには、フィールド初期化子およびコンストラクタ本体が実行される前にデフォルト値が割り当てられます。プログラマが書いた引数なしコンストラクタは、どちらも引数を取らないにもかかわらず、コンピラが提供するデフォルトコンストラクタとは異なります。
コンストラクタ(クラスと同じ名前、返り型なし)はnew上で実行され、オブジェクトの初期状態を設定する。オブジェクトごとの値にはパラメータを使用する。クラスは複数のコンストラクタをオーバーロードできる。コンストラクタを一切書かないと、Javaはデフォルトの引数なしコンストラクタを供給するが、いずれかのコンストラクタを定義するとこの無料のデフォルトは失われる。