ใช่ เราสามารถประกาศ ตัวสร้างเป็นแบบส่วนตัว . หากเราประกาศตัวสร้างเป็นแบบส่วนตัว เราไม่สามารถสร้างวัตถุของคลาสได้ เราสามารถใช้ตัวสร้างส่วนตัวนี้ใน รูปแบบการออกแบบซิงเกิลตัน .
เงื่อนไขสำหรับผู้สร้างส่วนตัว
- A ตัวสร้างส่วนตัว ไม่อนุญาตให้มีคลาสย่อย
- A คอนสตรัคโตส่วนตัว ร ไม่อนุญาตให้สร้างวัตถุนอกชั้นเรียน
- หากมีเมธอดคงที่ทั้งหมดในคลาสของเรา เราก็สามารถใช้ ตัวสร้างส่วนตัว
- หากวิธีการทั้งหมด คงที่ เราก็สามารถใช้ ตัวสร้างส่วนตัว
- ถ้าเราพยายาม ขยายคลาส ซึ่งมีตัวสร้างส่วนตัว ข้อผิดพลาดเวลาคอมไพล์จะเกิดขึ้น .
ตัวอย่าง
class SingletonObject {
private SingletonObject() {
System.out.println("In a private constructor");
}
public static SingletonObject getObject() {
// we can call this constructor
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