实现私有构造函数的 Java 程序

要理解此示例,您应该具备以下 Java 编程的知识:

示例 1:Java 程序创建私有构造函数

public class Test {

  // create private constructor
  private Test () {
    System.out.println("This is a private constructor.");
  }

  // create a public static method
  public static void instanceMethod() {

    // create an instance of Test class
    Test obj = new Test();
  }

}

public class Main {

  public static void main(String[] args) {

    // call the instanceMethod()
    Test.instanceMethod();
  }
}

输出

This is a private constructor.

在上面的例子中,我们创建了一个 Test 类的私有构造函数。因此,我们不能在 Test 类之外创建类的对象。

这就是为什么我们要在 Test 类中创建一个名为 instanceMethod()public static 方法,用于创建 Test 类。从 Main 类中,我们使用类名调用这个方法。

示例 2:使用私有构造函数的 Java 单例模式

Java Singleton 设计模式确保一个类应该只有一个实例。为此,我们使用私有构造函数。

public class Language {

  // create a public static variable of class type
  private static Language language;

  // private constructor
  private Language() {
    System.out.println("Inside Private Constructor");
  }

  // public static method
  public static Language getInstance() {

     // create object if it's not already created
     if(language == null) {
        language = new Language();
     }

      // returns the singleton object
      return language;
  }

  public void display() {
      System.out.println("Singleton Pattern is achieved");
  }
}

public class Main {
  public static void main(String[] args) {
     Language db1;

     // call the getInstance method
     db1= Language.getInstance();

     db1.display();
  }
}

输出

Inside Private Constructor
Singleton Pattern is achieved

在上面的例子中,我们创建了一个名为 Language 的类. 该类包含,

  • language- private 变量,它持有 Language 对象。
  • Language() - private 构造函数
  • getInstance() - public static 类类型方法
  • display() - public 方法

由于构造函数是 private ,我们不能从外部类创建 Language。因此,我们在 getInstance() 方法内部创建了类的对象。

但是,我们已将条件设置为仅创建一个对象。并且,该方法返回对象。

注意这一行,

db1 = Language.getInstance();

这里,

  • **db1**是一个变量语 类型
  • Language.getInstance() - 调用方法 getInstance() 创建一个对象或返回一有对象。

最后,我们使用对象调用了 display() 方法。