問題
開発者は金融システムのApexクラスを実装しています。このクラスでは、変数creditAmount
とdebtAmount
は、一度値が代入されると変更できないようにする必要があります。値が1回しか代入されないようにするために、開発者が変数を宣言する方法はどれですか。2つ選びなさい。
- staticキーワードを使用し、クラスのコンストラクタでその値を割り当てます。
- finalキーワードを使用し、クラスのコンストラクタでその値を割り当てます。
- staticキーワードを使用し、その値をstaticイニシャライザに割り当てます。
- finalキーワードを使用し、変数を宣言するときにその値を割り当てます。
正解
- staticキーワードを使用し、クラスのコンストラクタでその値を割り当てます。
- finalキーワードを使用し、クラスのコンストラクタでその値を割り当てます。
- staticキーワードを使用し、その値をstaticイニシャライザに割り当てます。
- finalキーワードを使用し、変数を宣言するときにその値を割り当てます。
解説
それぞれの選択肢の理由について説明します。
□ staticキーワードを使用し、クラスのコンストラクタでその値を割り当てます。
これは不正解です。static
キーワードは変数がクラスレベルで一度だけ初期化されることを意味しますが、変数の値が変更できないことを保証するものではありません。
□ finalキーワードを使用し、クラスのコンストラクタでその値を割り当てます。
これは正解です。final
キーワードは変数に値を一度だけ割り当てることを保証します。コンストラクタ内でfinal
変数を初期化することにより、オブジェクトのインスタンスごとに一意の値を一度だけ割り当てることができます。
□ staticキーワードを使用し、その値をstaticイニシャライザに割り当てます。
これは不正解です。static
イニシャライザで初期化されたstatic
変数は、クラスがロードされるときに一度だけ値が割り当てられますが、それはクラスのすべてのインスタンスで共有される値です。変数の値が変更できないことを保証するものではありません。
□ finalキーワードを使用し、変数を宣言するときにその値を割り当てます。
これは正解です。final
キーワードは変数が初期化後に変更できないことを保証します。変数宣言時にfinal
変数に値を割り当てることで、その値は変更不可能になります。
コメント