Nested classes
ญาณิศา ประทุมสุวรรณ์ 650710539
คลาสซ้อน(nested class) คือ คลาสที่ประกาศอยู่ภายในอีกคลาส จุดประสงค์ของคลาสซ้อนเป็นการจัดกลุ่มคลาสที่อยู่ด้วยกัน ซึ่งทำให้โค้ดของคุณสามารถอ่านง่ายและบำรุงรักษาได้มากขึ้น

Overview
ตัวอย่างเช่น class Car (OuterClass) ที่มี class Engine (InnerClass) ซ้อนอยู่ข้างใน
รถแต่ละคันจะมีเครื่องยนต์ที่แตกต่างกันไป
Nested Type: Non-static
ระดับการเข้าถึง Defaultจะเป็นprivate
เพื่อให้คลาสอื่นเข้าถึงได้นอกจากคลาสContainer เราจะเปลี่ยนคลาสNestedเป็น public และเพื่อให้คลาสอื่นสร้างobjectได้เราจะเปลี่ยนconstructorเป็นpublicด้วย
Access Modifiers ตัวอื่นๆที่Nested Classสามารถใช้ได้: protected, internal, protected internal, private, private protected
สำหรับ protected, protected internal, private protected สามารถเข้าถึงได้เฉพาะคลาสลูกที่Inheritคลาส OuterClassเท่านั้น
Nested Type: Static
ไม่จำเป็นต้องสร้างอินสแตนซ์ของ Container เพื่อใช้งาน Nested
Access Outer Class Members Inside Inner Class
คลาสชั้นในสามารถเข้าถึงแอตทริบิวต์และเมธอดของคลาสภายนอกได้
Nested Classes in Java

ในภาษาJavaแบ่งกว้างๆได้เป็น 2 ประเภทเช่นเดียวกับในภาษาC# คือ Static และ Non-static

Non-static มีคลาสพิเศษ 2 ชนิด
Local Classes
java: รองรับการประกาศคลาสภายในเมธอด โดยคลาสที่อยู่ภายในเมธอดสามารถเข้าถึงตัวแปรภายในเมธอดได้ (ถ้าตัวแปรนั้นเป็น final หรือ effectively final)
C#: ไม่มีการรองรับการประกาศคลาสภายในเมธอด แต่สามารถใช้ local function ซึ่งเป็นฟังก์ชันที่ประกาศภายในเมธอดได้ และ local function นี้สามารถเข้าถึงตัวแปรใน scope เดียวกันได้
Anonymous Classes
Java: anonymous inner class คือวิธีการสร้าง instance ของคลาส (มักจะเป็น interface หรือ abstract class) โดยไม่ต้องตั้งชื่อ มักจะใช้ในการจัดการเหตุการณ์ (events) หรือสร้าง object ขนาดเล็ก
C#: ไม่มีการรองรับ anonymous inner class โดยตรง แต่สามารถทำสิ่งที่คล้ายกันได้โดยใช้ คลาส private หรือ lambda (สำหรับ functional interfaces หรือ delegates)
Nested Classes in Python

nested class 2 ประเภทที่นิยมใช้ในภาษาPython
1. Multiple Inner Classes ในภาษาc#ก็สามารถเขียน Multiple inner classได้เช่นกัน
2. Multilevel inner class ในภาษาc#ก็สามารถเขียน Multilevel inner classได้เช่นกัน
Video Presentation
Slide
Reference
Overview
วันชัย ขันตี, Programming Concepts, Retrieved 5 October2024, from/http://www.bus.tu.ac.th/usr/wanchai/is311/knowledge/innerclass.pdf
(ใช้ตัวอย่างโค้ด)C# Nested Class, Retrieved 5 October2024, from/https://dev.programiz.com/csharp-programming/nested-class
Nested Type
Nested Types (C# Programming Guide), Retrieved 5 October2024, from/https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/nested-types
Access Outer Class Members Inside Inner class
(2024), Java Inner Classes, Retrieved 5 October2024, from/https://www.w3schools.com/java/java_inner_classes.asp
Nested Class in Java
(2023), Nested Classes in Java,Retrieved 5 October2024, from/https://www.geeksforgeeks.org/nested-classes-java/
Java and C# Equivalents, Retrieved 5 October2024, from/https://www.tangiblesoftwaresolutions.com/java-and-csharp-equivalents.html
Nested Class in Python
(2021), Nested Classes in Python Explained with Examples,Retrieved 5 October2024, from/https://www.pythonpool.com/nested-classes-python/
Last updated
