คีย์เวิร์ดปิดผนึกหมายความว่าคลาสไม่สามารถสืบทอดได้ การประกาศตัวสร้างเป็นส่วนตัวหมายความว่าไม่สามารถสร้างอินสแตนซ์ของคลาสได้
คุณสามารถมีคลาสฐานที่มีคอนสตรัคเตอร์ส่วนตัว แต่ยังคงสืบทอดจากคลาสฐานนั้น กำหนดคอนสตรัคเตอร์สาธารณะบางตัว และสร้างอินสแตนซ์คลาสฐานนั้นอย่างมีประสิทธิภาพ
คอนสตรัคเตอร์ไม่ได้รับการสืบทอด (ดังนั้นคลาสที่ได้รับจะไม่มีคอนสตรัคเตอร์ส่วนตัวทั้งหมดเพียงเพราะคลาสพื้นฐานมี) และคลาสที่ได้รับนั้นจะเรียกคอนสตรัคเตอร์คลาสพื้นฐานก่อนเสมอ
การทำเครื่องหมายชั้นเรียนที่ผนึกจะป้องกันไม่ให้บางคนทำงานเกี่ยวกับชั้นเรียนซิงเกิลตันที่สร้างขึ้นมาอย่างปราณีตของคุณเล็กน้อย เพราะจะป้องกันไม่ให้ผู้อื่นสืบทอดจากชั้นเรียน
ตัวอย่าง
static class Program { static void Main(string[] args){ Singleton fromStudent = Singleton.GetInstance; fromStudent.PrintDetails("From Student"); Singleton fromEmployee = Singleton.GetInstance; fromEmployee.PrintDetails("From Employee"); Console.WriteLine("-------------------------------------"); Singleton.DerivedSingleton derivedObj = new Singleton.DerivedSingleton(); derivedObj.PrintDetails("From Derived"); Console.ReadLine(); } } public class Singleton { private static int counter = 0; private static object obj = new object(); private Singleton() { counter++; Console.WriteLine("Counter Value " + counter.ToString()); } private static Singleton instance = null; public static Singleton GetInstance{ get { if (instance == null) instance = new Singleton(); return instance; } } public void PrintDetails(string message){ Console.WriteLine(message); } public class DerivedSingleton : Singleton { } }