Constructors could be public, default or private and it all depends on what you want to do with it.
For example, if you are defining a Singleton class, you'd better hide (meaning making it private so that it is only available to the class where it belongs) the constructor to prevent other classes to instantiate your class at their will.
You may want to declare it default, let's say, for testing purposes so that test cases within the same package could access it.
More detailed info could be found here