示例 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()
方法。