私有构造函数不允许创建对象,例如这里是代码..
class emp
{
private emp()//private constructor
{
}
}
public class privateconstructor
{
public static void main(String[] args)
{
emp e = new emp();//throws Error as constructor not visible
}
}
通过将类声明为 abstract ,也可以阻止用户创建对象..所以我的问题是为什么私有构造函数?
仅供参考:
虽然对象可以通过静态方法创建,例如..
class emp
{
private emp()//private constructor
{
}
static emp createInstance()//static method
{
return new emp();//returns an instance
}
void disp()
{
System.out.println("member function called");
}
}
public class privateconstructor
{
public static void main(String[] args)
{
emp e = emp.createInstance();//creating object by static method
e.disp();
}
}
输出:名为
的成员函数答案 0 :(得分:5)
所以我的问题是为什么私人建构?
这样做是为了防止从任何其他类构造类。这通常用于实用程序类,单例或具有工厂方法而不是构造函数的类。
所有enum
类都有私有构造函数,它们对于Utility和Singleton类也很有用。
答案 1 :(得分:0)
有些对象依赖于特定的东西。假设运行时类,其实例将依赖于System的当前运行时环境。而不是,
Runtime run = new Runtime(); //java.lang.Runtime
RunTime的Object由:
创建Runtime ru = Runtime.getRuntime();
所以那些不允许创建对象的类使用私有构造函数。