হ্যাঁ, আমরা একটি কনস্ট্রাক্টরকে private ডিক্লেয়ার করতে পারি। যদি কনস্ট্রাক্টরকে private ডিক্লেয়ার করা হয়, তবে আমরা ক্লাসের অবজেক্ট তৈরি করতে পারব না। এই private কনস্ট্রাক্টরটি সিংলটন ডিজাইন প্যাটার্ন-এ ব্যবহার করা হয়।
প্রাইভেট কনস্ট্রাক্টরের শর্তাবলী
- একটি প্রাইভেট কনস্ট্রাক্টর ক্লাসকে সাবক্লাস করার অনুমতি দেয় না।
- একটি প্রাইভেট কনস্ট্রাক্টর ক্লাসের বাইরে অবজেক্ট তৈরির অনুমতি দেয় না।
- যদি আমাদের ক্লাসে সকল কনস্ট্যান্ট মেথড থাকে, তবে আমরা প্রাইভেট কনস্ট্রাক্টর ব্যবহার করতে পারি।
- যদি সকল মেথড স্ট্যাটিক হয়, তবে আমরা প্রাইভেট কনস্ট্রাক্টর ব্যবহার করতে পারি।
- যদি আমরা এমন একটি ক্লাসকে এক্সটেন্ড করার চেষ্টা করি যার প্রাইভেট কনস্ট্রাক্টর আছে, তবে কম্পাইল টাইম এরর হবে।
উদাহরণ
class SingletonObject {
private SingletonObject() {
System.out.println("In a private constructor");
}
public static SingletonObject getObject() {
// এই কনস্ট্রাক্টর কল করা যায়
if (ref == null)
ref = new SingletonObject();
return ref;
}
private static SingletonObject ref;
}
public class PrivateConstructorDemo {
public static void main(String args[]) {
SingletonObject sObj = SingletonObject.getObject();
}
}
আউটপুট
In a private constructor