Java Nested Classes

Nested Classes เป็น Class ที่ประกาศภายใน body ของ Class หรือ Interface อื่นๆ

จุดประสงค์หลักของการสร้าง Nested Classes คือการ group Class และ Interface ที่เกี่ยวข้องกันให้อยู่ภายใน File เดียวกัน ถึงแม้ว่าการทำ Package ก็ช่วยในเรื่องดังกล่าวแล้วแต่การทำ Nested Classes ทำให้การ group แข็งแรงมากขึ้นอีกขั้น

Nested Classes จะถือว่าเป็นสมาชิกของ Class ที่ล้อมรอบมัน ดังนั้นเราสามารถที่จะระบุ Access Modifier ให้มันได้ และ Nested Classes นี้ยังถูกสืบทอดไปให้ SubClass อีกทั้งยังใส่ Abstract หรือ final ให้มันได้อีกด้วย

ข้อได้เปรียบในการสร้าง Nested Classes
1. Nested Classes สามารถเข้าถึง ทุกสมาชิก(field and method) ของ Class ที่ล้อมรอบมันได้ แม้ว่าจะระบุ Access Modifier private ก็ยังเข้าถึงได้
2. Nested Classes นำไปใช้ในการพัฒนาเพื่อทำให้อ่าน code และบำรุงรักษาได้มากขึ้น
3. เพิ่มประสิทธิภาพการเขียน code ในบางกรณีอาจช่วยให้เขียน code น้อยลง

บ่อยครั้งที่นักพัฒนาจะกล่าวถึง Nested Classes เป็น Inner Classes แต่ Inner Classes คือ Non-Static Nested Classes ซึ่งมันคือประเภทหนึ่งของ Nested Classes

Nested Classes แบ่งออกเป็น 4 ประเภทได้แก่

1. Static Nested Classes
คือ Static Class ที่สร้างภายใน Class ที่ล้อมรอบมัน
Static Nested Classes ไม่สามารถเข้าถึง non-static (Variable และ Method) ของ Class ที่ล้อมรอบมันได้
Static Nested Classes สามารถเข้าถึง static (Variable และ Method) ของ Class ที่ล้อมรอบมันได้
Static Nested Classes สามารถสร้าง Instance ของมันในส่วน Method ของ Class ที่ล้อมรอบมันได้
โดยดูจากตัวอย่างต่อจากนี้

ตัวอย่าง code





2. Non-Static Nested Classes
คือ Class ที่สร้างภายใน Class ที่ล้อมรอบมัน แต่ไม่ได้สร้างใน Method
Non-Static Nested Classes สามารถเข้าถึง Variable และ Method ทั้งหมด ของ Class ที่ล้อมรอบมันได้
Non-Static Nested Classes สามารถสร้าง Instance ของมันในส่วน Method ของ Class ที่ล้อมรอบมันได้
โดยดูจากตัวอย่างต่อจากนี้

ตัวอย่าง code




3. Local Classes
คือ Class ที่สร้างใน Method
Local Classes สามารถเข้าถึง Variable และ Method ทั้งหมด ของ Class ที่ล้อมรอบมันได้
Local Classes สามารถสร้าง Instance ของมันได้ภายใน Method ที่ Local Classes ถูกสร้างขึ้นเท่านั้น

ตัวอย่าง code




4. Anonymous Classes
คือ Class ที่ไม่มีชื่อ จะสร้างในตอนสร้าง Instance ของ SubClass หรือ Class ที่ implements Interface 
Anonymous Classes มันควรใช้ถ้าคุณมีการ Override Method ของ SuperClass หรือ Interface 
Anonymous Classes สามารถเข้าถึง Variable และ Method ทั้งหมด ของ Class ที่ล้อมรอบมันได้

ตัวอย่าง code




ประโยชน์ของ Anonymous Classes สามารถสั่งทำงานย่อยๆบางอย่างได้ ในโปรแกรมของคุณ

ตัวอย่าง code








ไม่มีความคิดเห็น:

แสดงความคิดเห็น