>>727

このようなクラスは、実は単に全てのフィールド/オペレーションをstaticにしたものを使っても同じです。

Singletonパターンが全てをstaticにしたクラスに対して勝れているのは、
クラスではなくオブジェクトとして唯一であるため、オブジェクト個数を一つ以外に制限することができる点と、
うまくすればサブクラスを返させるようにしてポリモーフィズムによる拡張が可能という点です。

しかしprivateコンストラクタを用いてしまうと、サブクラスのインスタンス化が不可能になってしまうため、この効果が得られません。
また、C++ではprotectedコンストラクタにすることでサブクラスのインスタンス化を可能にしていますが、
Javaのprotectedはパッケージ内の他のクラスからもアクセス可能なため、この目的に沿いません。
(パッケージ管理をちゃんと行えていればそれでもよいのですが)

従って、Javaでは素直にSingletonを実装することはできないということになります。

Singletonの継承を捨てるなら話は別ですが、それならば、全てをstaticにすればよい話です。
まあ、全てstaticは見苦しいからあまりしないとは思いますが。

Javaで完全なSingletonパターンを実現するためには、interfaceと内部クラスを用いたトリッキーな方法を使わざるをえません。