การทำเครื่องหมายคลาสเป็นการSealed
ป้องกันการปลอมแปลงคลาสสำคัญที่อาจทำให้ความปลอดภัยลดลงหรือส่งผลต่อประสิทธิภาพ
หลายครั้งการปิดผนึกคลาสก็สมเหตุสมผลเช่นกันเมื่อมีการออกแบบคลาสยูทิลิตี้ที่มีพฤติกรรมคงที่ซึ่งเราไม่ต้องการเปลี่ยนแปลง
ตัวอย่างเช่นSystem
เนมสเปซในC#
มีหลายคลาสที่ปิดผนึกเช่นString
. หากไม่ได้ปิดผนึกอาจเป็นไปได้ที่จะขยายฟังก์ชันการทำงานซึ่งอาจไม่เป็นที่ต้องการเนื่องจากเป็นประเภทพื้นฐานที่มีฟังก์ชันการทำงานที่กำหนด
ในทำนองเดียวกันstructures
ในC#
จะถูกปิดผนึกโดยปริยายเสมอ ดังนั้นจึงไม่สามารถรับโครงสร้าง / คลาสหนึ่งจากโครงสร้างอื่นได้ เหตุผลนี้structures
ใช้เพื่อสร้างแบบจำลองเฉพาะชนิดข้อมูลแบบสแตนด์อะโลนอะตอมที่ผู้ใช้กำหนดซึ่งเราไม่ต้องการแก้ไข
บางครั้งเมื่อคุณกำลังสร้างลำดับชั้นคุณอาจต้องการปิดสาขาบางสาขาในสายการสืบทอดโดยยึดตามรูปแบบโดเมนหรือกฎทางธุรกิจของคุณ
ตัวอย่างเช่น a Manager
และPartTimeEmployee
เป็นทั้งสองEmployee
แต่คุณไม่มีบทบาทใด ๆ หลังจากพนักงานพาร์ทไทม์ในองค์กรของคุณ ในกรณีนี้คุณอาจต้องการปิดผนึกPartTimeEmployee
เพื่อป้องกันการแตกแขนงเพิ่มเติม ในทางกลับกันหากคุณมีพนักงานพาร์ทไทม์รายชั่วโมงหรือรายสัปดาห์อาจเป็นเรื่องที่สมเหตุสมผลที่จะรับช่วงต่อจากPartTimeEmployee
นั้น