Java program to implement private constructors
In Java, we can declare a constructor as private
to prevent the creation of objects of that class by other classes. A private constructor is typically used in a singleton design pattern, where we ensure that only one instance of the class is created throughout the application. Here's an example Java program to implement a private constructor:
public class PrivateConstructorExample { private static PrivateConstructorExample instance = null; private PrivateConstructorExample() { // Private constructor } public static PrivateConstructorExample getInstance() { if (instance == null) { instance = new PrivateConstructorExample(); } return instance; } public void printMessage() { System.out.println("Hello, World!"); } }
In this program, we have a PrivateConstructorExample
class with a private constructor. We have also declared a static variable instance
to hold the single instance of the class. We use a static method getInstance()
to get the single instance of the class. In this method, we check if the instance is null and create a new instance if it's null. We return the instance from this method.
We have also added a printMessage()
method to print a message to the console. We can call this method on the single instance of the class.
Here's an example usage of the PrivateConstructorExample
class:
public class Main { public static void main(String[] args) { PrivateConstructorExample obj1 = PrivateConstructorExample.getInstance(); obj1.printMessage(); PrivateConstructorExample obj2 = PrivateConstructorExample.getInstance(); obj2.printMessage(); System.out.println(obj1 == obj2); // Output: true } }
In this usage example, we first create an instance of the PrivateConstructorExample
class using the getInstance()
method. We then call the printMessage()
method on this instance. We create a second instance of the class using the getInstance()
method and call the printMessage()
method on this instance as well. We also compare the two instances using the ==
operator and print the result to the console. Since both instances are the same object, the output of this comparison is true
.