示例 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 单例设计模式
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()
方法。