如何避免在ClassB中创建classA的对象

时间:2017-10-24 13:29:38

标签: java

我的一次采访中有一个问题:

假设我有一个classA,我应该只在classA中创建classA的对象,而不是在任何其他类中,例如:

classA{
// some instructions

ClassA a = new ClassA();
}

ClassB{
//Some instructions

ClassA a1 = new ClassA(); // Here I should throw a compilation or runtime error.
}

我通过添加私有构造函数告诉我,但他告诉我们应该能够在同一个类中创建多个对象。我可以做到吗?

3 个答案:

答案 0 :(得分:6)

使其构造函数private

private classA() {}

这禁止在其他任何地方调用它。 例如
私有构造函数用于Utility classesStatic factory
更新:正如@Arkadiy注意到它不会限制您可以创建的实例数量。

答案 1 :(得分:0)

您可以通过将私有访问修饰符用于类的构造函数来实现它,

私有访问修饰符只允许私有事物在其自己的类中访问。

以下是访问修饰符及其访问范围的表 enter image description here

答案 2 :(得分:0)

  1. 将构造函数设为私有
  2. 遵循工厂方法或工厂模式