説明が下手でスマン。javaとオブジェクトの比較の例で捕捉してみる。

- 本来オブジェクトの比較は第三者(Comparatorのような)が行うべきだ。
 理由は、前に書いたので分かって貰えると思う。

- ところがjava言語では、Objectクラスに比較メソッド equals(Object)
 が定義されていて、任意のオブジェクトの比較にこのメソッドを使う
 のが標準的、ということになってる。これはおかしい。

- じゃ、なんでこうしてるのか?と考えてみると、OOの考え方が悪い方向
 に影響を与えてるのではないかと推測できる。つまり、

1 オブジェクトの内部データに確実にアクセスできるのはそのオブジェクト
 自身だけである、というカプセル化の考え方があるから。したがって、
 第三者であるところのComparatorは潜在的に、オブジェクトを比較する
 のに十分なデータにアクセスできるとは限らない。

2 「オブジェクトは自分自身について知っているとよい」という考え方が
 あるから。

こんな感じ。