Using sealed class to Prevent Inheritance
อรปรียา บุดดี 650710593
Sealed class คืออะไร
Sealed class คือ คลาสที่จำกัดการใช้งาน โดยจุดประสงค์ของคลาส sealed นั้นเพื่อป้องกันการสืบทอด (inheritance) หรือมีคลาสลูกได้ คลาสที่ประกาศเป็น sealed จะใช้ keyword คำว่า sealed นำหน้า class
ตัวอย่าง C#
public sealed class MySealedClass
{
public void DisplayMessage()
{
Console.WriteLine("Hello from MySealedClass!");
}
}seal class ไม่สามารถนำมาเป็น base class ได้ ดังนั้นจึงไม่สามารถทำให้เป็น abstract class ได้เช่นกัน แต่สามารถใช้ sealed class ร่วมกันกับ method abstract class ได้
ซึ่งการ sealed นั้น สามารถ ใช้กับ method, indexer, property หรือ event, ในคลาสลูกที่ Overriding แล้วจะทำให้คุณสมบัติของ virtual member จากคลาสพื้นฐานหมดไป และการประกาศ sealed นั้น จะใส่ไว้หน้าคำว่า override
การใช้งาน sealed class
Class ทั่วไป
ตัวอย่าง C#
company หนึ่งที่มีข้อมูลในบริษัท จะมี class employee โดยบริษัทไม่ต้องการให้ employee เข้าถึงข้อมูลบางอย่าง เราจะใช้ sealed ในการป้องกันการสืบทอดนั้น
Abstract class
เปรียบเทียบ Sealed class in JAVA and Python
JAVA
Class: จะประกาศ sealed หน้า class ตามด้วย permits และ กำหนดเฉพาะชื่อ class ที่ต้องการอนุญาติให้เข้าถึงได้sealed class ได้
ตัวอย่าง JAVA :class
Interface: จะคล้ายกับ class เลย เพียงแต่จะใส่คำว่า sealed หน้าคำว่า interface แล้วตามด้วย permits เช่นกัน
ตัวอย่าง JAVA : interface
Python
ใน Python จะไม่ใช้คำว่า sealed โดยตรง แต่จะใช้การสร้าง Metaclass ขึ้นมาแทน เพราะ method __init__subclass__ สามารถที่จะควบคุมการสืบทอดของคลาสได้เช่นกัน
ตัวอย่าง Python
ประโยชน์ของการใช้คลาส sealed
ป้องกันการสืบทอด
เพิ่มประสิทธิภาพในการ run time เนื่องจากการ sealed class ทำให้เกิดความรวดเร็วในการ compile
ควบคุมการใช้งานของโปรแกรมให้ชัดเจน
Slide
Video Presentation
Referenced
Last updated
