teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

refine

2016/09/14 05:56

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -5,8 +5,7 @@
5
5
  - ①コンストラクタによるメンバ変数代入は、オブジェクト生成と同時に行われます。質問にあるクラスは**デフォルトコンストラクタを提供しない**ため、クラスTestにとって「nameという属性指定は必須であり、既定値(デフォルト値)は存在しない」という意図となります。
6
6
  - ②setterメソッドによるメンバ変数代入は、オブジェクトの生成後にいつでも「nameという属性値を変更できる」という設計を反映したものです。
7
7
 
8
- 後者setterメソッドを提供することは、クラスTestは「**ミュータブル(Mutable)/可変**なクラスである」ことを意味しており、Javaのクラス設計に置いては非常に重要な意味を持ちます。
8
+ 後者setterメソッドを提供することは、クラスTestは「**ミュータブル(Mutable)/可変**なクラスである」ことを意味します。
9
+ 反対に、全ての**メンバ変数をfinal宣言**し、コンストラクタでのみメンバ変数を設定し、setterメソッドを**提供しない**クラスは、**イミュータブル(Immutable)/不変**なクラスと呼ばれます。クラスをイミュータブルとすることは、Javaのクラス設計においては非常に重要な意味を持ちます。
9
10
 
10
- 反対に、全ての**メンバ変数をfinal宣言**し、コンストラクタでのみメンバ変数を設定し、setterメソッドを**提供しない**クラスは、**イミュータブル(Immutable)/不変**なクラスと呼ばれます。
11
-
12
11
  「[Javaの理論と実践: 可変性か、不変性か?](https://www.ibm.com/developerworks/jp/java/library/j-jtp02183/)」も参考にどうぞ。