Skip to main content

ชั้นเรียนที่ไม่ระบุชื่อคืออะไร?

ในการเขียนโปรแกรมคอมพิวเตอร์เชิงวัตถุคลาสภายในที่ไม่ระบุชื่อเป็นคลาสที่ประกาศภายในวิธีการ แต่ไม่มีชื่อคลาสภายในที่ไม่ระบุชื่อมีข้อ จำกัด หลายประการที่ทำให้แตกต่างจากคลาสปกติรวมถึงข้อ จำกัด ในขอบเขตของตัวแปรที่สามารถเข้าถึงได้มีบางสถานการณ์ที่เฉพาะเจาะจงซึ่งการใช้คลาสภายในที่ไม่ระบุชื่อสามารถทำให้ซอร์สโค้ดอ่านได้มากขึ้น แต่ส่วนใหญ่จะใช้เพื่อช่วยบังคับใช้การห่อหุ้มที่การสร้างคลาสแยกต่างหากสามารถทำให้มันซับซ้อน

การห่อหุ้มเป็นแนวคิดในการเขียนโปรแกรมเชิงวัตถุ(OOP) ว่าวัตถุและส่วนประกอบควรได้รับการปกป้องและผูกพันกับวัตถุชั้นเรียนภายในที่ไม่ระบุชื่อและชั้นเรียนภายในโดยทั่วไปช่วยให้ตระหนักถึงการห่อหุ้มสำหรับวัตถุที่ซับซ้อนโดยเฉพาะแทนที่จะต้องสร้างคลาสที่ต้องอาศัยภายนอกที่แยกต่างหากผูกมัดพวกเขาเข้าด้วยกันอย่างเทียมและอาจเปิดเผยส่วนประกอบบางส่วนชั้นในที่ไม่ระบุชื่อสามารถผูกทั้งสองเข้าด้วยกันอย่างแน่นหนา

ในภาษาการเขียนโปรแกรมบางชั้นช่วยเอาชนะข้อ จำกัด ของมรดกเดี่ยวหากวัตถุที่สืบทอดมาจากคลาสหนึ่ง แต่จำเป็นต้องเข้าถึงอีกชั้นเรียนชั้นในสามารถสร้างได้ทันทีและจากนั้นส่งผ่านไปยังตัวจัดการที่เหมาะสมเทคนิคนี้เป็นเรื่องธรรมดากับการโทรกลับและผู้ฟังเหตุการณ์ทางเลือกเดียวคือการสร้างคลาสที่สองทั้งหมดซึ่งมีเพียงหนึ่งหรือสองวิธีเท่านั้นที่ถูกแทนที่

คลาสภายในที่ไม่ระบุชื่อมีข้อ จำกัด บางประการเพื่อป้องกันการห่อหุ้มและการบังคับใช้ขอบเขตข้อ จำกัด หลักคือคลาสภายในที่ไม่ระบุชื่อไม่สามารถเข้าถึงตัวแปรของวิธีการที่อยู่ได้เว้นแต่ว่าตัวแปรเหล่านั้นจะถูกประกาศว่าเป็นที่สุดนี่เป็นเพราะชั้นเรียนภายในสามารถทำงานต่อไปได้นอกเหนือจากชีวิตของชั้นเรียนและวิธีการที่มันทำรังตัวแปรของคลาสการห่อจะถูกทำลายเมื่อชีวิตของมันจบลงดังนั้นการอ้างอิงระดับชั้นในที่จัดขึ้นจะไม่ถูกต้องทันทีข้อยกเว้นเพียงอย่างเดียวคือตัวแปรสุดท้ายเพราะมันจะมีอยู่นอกเหนือจากอินสแตนซ์

หนึ่งในการใช้งานที่เฉพาะเจาะจงมากขึ้นสำหรับคลาสภายในที่ไม่ระบุชื่อคือการป้องกันรหัสภาษา OOP หลายภาษาจัดเตรียมสำหรับกลไกที่เรียกว่าการสะท้อนReflection ช่วยให้โปรแกรมสามารถผ่าคลาสอื่นและดูว่าตัวแปรและวิธีการของสมาชิกเป็นอย่างไร แต่ไม่ใช่รหัสเองด้วยการใช้คลาสภายในที่ไม่ระบุชื่อเนื้อหาของคลาสด้านในจะได้รับการปกป้องจากการสะท้อนและการทำงานภายในของคลาสที่ใหญ่กว่านั้นสามารถซ่อนได้อย่างมีประสิทธิภาพ