javaの不変クラスにfinalを修飾する理由についての質問です。 ・クラスのすべてのフィールドをprivate finalとする ・セッターメソッドを実装しない

補足

>> 不変(イミュータブル)クラスは不変であることが非常に大きな意味を持っています(バグを防ぐ意味で)。これを継承して可変部分を付加されてしまうと、使用者に混乱を与えるだろうと言う判断かと思います。 では、finalで修飾していなくても、他の不変クラスの条件をみたしたいれば、そこから生成されたインスタンスの状態は変わらない。しかし、それを継承した、子クラスも不変クラスであると勘違いして利用されてしまう可能性があるため、それを防ぐ意味でfinalを付けるということでよろしいでしょうか?

ベストアンサー

0

ThanksImg質問者からのお礼コメント

ご親切にありがとうございます。 オブジェクト指向の意図ともつながり、大変勉強になりました。

お礼日時:1/21 16:36

その他の回答(1件)

0

> 不変クラスを継承した可変クラスのインスタンスの値が変わっているだけ これを避けたいので、finalを付けています。 不変(イミュータブル)クラスは不変であることが非常に大きな意味を持っています(バグを防ぐ意味で)。これを継承して可変部分を付加されてしまうと、使用者に混乱を与えるだろうと言う判断かと思います。 どうしても似たようなもので可変クラスを作りたいなら、内部に不変クラスを持つ新しいクラスを作成します。