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

📅  最后修改于: 2020-09-26 19:09:33             🧑  作者: Mango

在这个例子中,我们将学习用Java实现私有构造函数。

示例1:创建私有构造函数的Java程序
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();
  }

}

class Main {

  public static void main(String[] args) {

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

输出

This is a private constructor.

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

这就是为什么我们在类内部创建了一个名为instanceMethod()public static方法,该方法用于创建Test类的对象。在Main类中,我们使用类名调用该方法。


示例2:使用私有构造函数的Java Singleton设计

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

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");
  }
}

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

在上面的示例中,我们创建了一个名为Languages的类。该类包含

  • 语言 -类类型private变量
  • Language()private构造函数
  • getInstance()public static类类型方法
  • display()public方法

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

但是,我们以仅创建一个对象的方式设置了条件。并且,该方法返回对象。

注意这一行,

db1 = Language.getInstance();

这里,

  • db1语言类型的变量
  • Language.getInstance() -调用方法getInstance()

由于getInstance()返回Language类的对象,因此将db1变量分配给返回的对象。

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