>>114さん
やりたいことはその通りです。
B,C,Dには拡張機能はありません。
B,C,Dは実行環境(プラットフォームでも良い)に依存したクラスです。


・クラスA,B,Cを含むパッケージがあります。
・Aは抽象クラスです。
・Aを継承したクラスB,C,Dを作成します。
・B,C,DはAの異なる実装ですが、同じ機能を提供し、それぞれに拡張機能はありません

ここに、インスタンスの生成に関して2つ条件を加えようとしています。

・B,C,Dのインスタンスは排他的にどれか一つしか生成できません。
・B,C,Dのインスタンスはいずれも、同時に一つしか生成できません。

これが上手く実現できません。。。