私は次のことをします:
公開授業 本
{
プライベート最終文字列タイトル。
プライベート最終文字列 isbn;
public Book(最終文字列 t, 最終文字列 i)
{
if(t == null)
{
throw new IllegalArgumentException("t を null にすることはできません");
}
if(i == null)
{
throw new IllegalArgumentException("i を null にすることはできません");
}
タイトル = t;
isbn = 私;
}
}
ここでは、次のことを前提としています。
1) タイトルは決して変更されません (したがって、タイトルは最終的なものです) 2) ISBN は決して変更されません (したがって、ISBN は最終的なものです) 3) タイトルと ISBN の両方がない本を持つことは有効ではありません。
学生クラスを考えてみましょう:
公開クラス 学生
{
プライベート最終学生 ID;
プライベート文字列 firstName;
プライベート文字列 lastName;
public Student(最終StudentID i,
最終的な文字列が最初に、
最終文字列最後)
{
if(i == null)
{
throw new IllegalArgumentException("i を null にすることはできません");
}
if(first == null)
{
throw new IllegalArgumentException("first を null にすることはできません");
}
if(最後 == null)
{
throw new IllegalArgumentException("最後を null にすることはできません");
}
ID = 私;
firstName = 最初;
lastName = 最後;
}
}
そこで、ID、名、姓を使用して Student を作成する必要があります。学生 ID は変更できませんが、姓名は変更できます (結婚、賭けに負けて名前が変わるなど)。
どのコンストラクターを使用するかを決定するときは、何を使用するのが理にかなっているのかを本当に考える必要があります。多くの場合、人々は教えられているために set/get メソッドを追加しますが、多くの場合、それは悪い考えです。
不変クラスは、可変クラスよりもはるかに優れています (つまり、最終変数を持つクラス)。この本: http://books.google.com/books?id=ZZOiqZQIbRMC&pg=PA97&sig=JgnunNhNb8MYDcx60Kq4IyHUC58#PPP1,M1 (Effective Java) では、不変性についての良い議論があります。項目 12 と 13 を見てください。