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

นำส่วนที่อธิบาย Sealed Class มาใช้
นำส่วนเพิ่มเติมของ method index propotyมาอธิบาย
นำส่วน code มาประยุกต์ใช้
ส่วนที่อธิบายเพิ่มเติมจาก class และ inheritance
นำส่วนที่ใช้แทน sealed class มาอธิบาย

Last updated