Private Constructor
วรนพ ลิมป์ปีติวรกุล 650710579
Private Constructor (C#) คือ constructorแบบพิเศษที่ใช้ในคลาสที่มีสมาชิกเป็นแบบstaticเท่านั้น หากคลาสมี private constructor และไม่มี public constructor คลาสอื่นจะไม่สามารถสร้างinstanceของคลาสนี้ได้ ซึ่งหมายความว่าไม่สามารถสร้างวัตถุ(object)ของคลาสนี้ได้ และไม่สามารถสืบทอด(inherit)คลาสนี้ได้เช่นกัน
ความสามารถของ Private Constructor
ป้องกันการสร้างวัตถุใหม่จากภายนอกคลาส
ใช้สร้างคลาสที่มีเพียงinstanceเดียว เช่น Singleton Pattern และอื่นๆ
ใช้สำหรับโค้ดที่ต้องการควบคุมการสร้างวัตถุหรือจำกัดให้การสร้างเฉพาะภายในคลาสเท่านั้น
ตัวอย่าง
public class Example{
// Private constructor
private Example(){
// Initialization code here
}
}
ตัวอย่างการนำไปใช้งาน
using System;
class Singleton {
private static Singleton instance;
// Private constructor
private Singleton(){
}
// Static methodเพื่อให้มีinstanceเดียว
public static Singleton GetInstance(){
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class Program {
public static void Main(string[] args){
// เรียกใช้Singleton instance
Singleton singleton1 = Singleton.GetInstance();
Singleton singleton2 = Singleton.GetInstance();
// แสดงผลการตรวจสอบว่าinstanceที่สร้างอ้างถึงobjectเดียวกันหรือไม่
if (singleton1 == singleton2){
Console.WriteLine("อ้างถึงSingleton instanceเดียวกัน");
}
else{
Console.WriteLine("อ้างถึงSingleton instanceคนละตัว");
}
}
}
เปรียบเทียบกับภาษาอื่นๆ
class Example {
private:
// Private constructor
Example(){
// Initialization code here
}
public:
// Static methodสำหรับสร้างinstance (ถ้าต้องใช้)
static Example createInstance(){
return Example();
}
};
สรุป
C# ใช้ private
ก่อนชื่อconstructorเพื่อป้องกันไม่ให้มีการสร้างinstanceจากภายนอกคลาส
C++ และ Java คล้ายกับ C# โดยใช้ private
ในการกำหนดconstructor
Python ไม่มีแนวคิดของ private constructor
แต่สามารถใช้การตั้งชื่อ (เช่น _init_
) เพื่อบ่งบอกว่าควรใช้งานภายใน
Referance
Presentation Silde
Video
Last updated