实现私有构造函数的 Java 程序
要理解此示例,您应该具备以下 Java 编程的知识:
- 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()
方法。