Java教程

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

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

在这个例子中,我们将学习在 Java 中实现私有构造函数。
要理解此示例,您应该了解以下Java 编程主题:
Java 构造函数 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 类的对象。
这就是为什么我们在用于创建 TestinstanceMethod() 的 public static 方法> 班级。在 Main 类中,我们使用类名调用方法。

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

Java 单例设计模式确保一个类应该只有一个实例。为此,我们使用私有构造函数。
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 的类。该类包含,
language-类类型 private 变量 Language()-private 构造函数 getInstance()-public static 类类型方法 display()-public 方法
由于构造函数是 private,我们不能从外部类创建 Language 的对象。因此,我们在 getInstance() 方法中创建了该类的对象。
但是,我们以这样一种方式设置了条件,即只创建一个对象。并且,该方法返回对象。
注意这一行,
db1 = Language.getInstance();
这里,
db1 是 Language 类型的变量 Language.getInstance()-调用方法 getInstance()
由于 getInstance() 返回的是 Language 类的对象, db1 变量被赋值为返回的对象。
最后,我们使用对象调用了 display() 方法。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4