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