改めて見ると387のコードは味があるな
元々の問題意識が一番謎。

C++的にはこんなところだと思う
・デフォルトコンストラクタは副作用が大きいから出来るだけ明示的に宣言して使わない
・explicit付ける
・コンストラクタとコピーコンストラクタ/代入演算子を定義
 自作クラスをコンテナに入れるなら特に必要
・virtualなデストラクタ

何個かオーバーロードするなら、
引数の少ないコンストラクタは一番引数の多いコンストラクタに丸投げ
(C++だとデフォルト引数も使えるけどJavaはむしろこれしか選択肢がない)