class A{ private int hoge; public A(int foo){ hoge = foo; } } class B{ private int hoge; private B(int foo){hoge = foo;} public static B createB(int foo){ return new B(foo); } } public class StaticClassTest01 { A a = new A(1); B b = B.createB(1); } Aの様な型と、Bの様な型と、どのように使い分ければよいのでしょうか?