1. ให้ศึกษา Package ของ Java โดยเน้นหนักไปที่ package scope ของ attributesและ methods ที่อยู่ใน Package ให้เขียนคำตอบลงใน blog
Package
เป็นไฟล์ที่ใช้เก็บรายชื่อ class ที่การนำมาใช้ในงานเดียวกันหรือมีวัตถุประสงค์ในการทำงานคล้ายกัน เพื่อให้สะดวกแก่การใช้งานได้สะดวกและรวดเร็ว รวมทั้งยังสามารถกำจัดปัญหาเกี่ยวกับชื่อclass ที่ซ้ำกันได้ด้วย (ชื่อclass สามารถใช้ซ้ำกันได้ ถ้าอยู่ต่างclassกัน)
ข้อกำหนดของการตั้งชื่อ class ในจาวาคือ ชื่อจะต้องไม่ซ้ำกันในแต่ละโปรแกรม ซึ่งเมื่อมีการสร้างโปรแกรมมากขึ้น โอกาสที่ชื่อclassจะซ้ำกันมีสูง เพื่อหลีกเลี่ยงปัญหานี้ จึงมีคำสั่ง "Package" เพื่อใช้เก็บรายชื่อ Class ต่างๆ ที่ใช้ทำงานประเภทเดียวกันไว้ด้วยกัน เมื่อต้องการใช้งาน Class ใดๆ ก็สามารถเรียกใช้ Package ที่เก็บ class ขึ้นมาในโปรแกรม จากนั้นจึงเรียกใช้ method ต่างๆใน class นี้อีกที ทำให้สามารถตั้งชื่อ Class หรือ Method ซ้ำกันได้ (ถ้าเก็บไว้ในต่าง Package กัน และไม่เรียกใช้พร้อมกัน ถ้ามีการเรียกใช้พร้อมกันในโปรแกรมเดียวกัน เมื่อ compile โปรแกรมจะไม่มีผลใดๆ แต่เมื่อเรียกใช้งานโปรแกรมนี้ เมื่อใดจะเกิด Error ฟ้องมาทันที)
การใช้คำสั่ง "Package"
package MyPackage;
โดย
package เป็นคำสั่ง
MyPackage เป็นชื่อ Package ที่ตั้งขึ้นมา โดยชื่อ Packageนี้จะเป็นชื่อ Directory ที่ใช้เก็บชื่อ Class ต่าง (.class) เช่น จากตัวอย่างจะต้องสร้าง Directory ชื่อ MyPackage ขึ้นมาด้วย โดยโปรแกรมที่ compile เสร็จแล้วให้นำมาเก็บไว้ใน Directory ที่ระบุไว้ในคำสั่ง Package ด้วย
ระวัง! ชื่อ Package ต้องตรงกันทั้งตัวอักษรพิมพ์เล็กและพิมพ์ใหญ่
กรณีที่ต้องการสร้าง Package แบบลำดับชั้น (คือมี subdirectory) ให้ใช้เครื่องหมายจุด(.)คั่นระหว่างชื่อด้วย
Ex. package SNSD.pics.Sunny;
- โปรแกรมที่ compile เสร็จ จะต้องเก็บไว้ใน directory ชื่อ "SNSD\pics\Sunny" เท่านั้น
การป้องกันใน Package
ในการเรียกใช้ method ต่างๆของแต่ละ class หรือแต่ละ package นั้น จะมีการกำหนดค่า Accessibility ไว้ด้วย ทั้งนี้จะแยก Class ออกเป็น 5 กลุ่ม ได้แก่
1. class เดียวกัน
2. subclass ใน package เดียวกัน
3. ไม่เป็น subclass แต่อยู่ใน package เดียวกัน
4. subclass ที่อยู่ต่าง package เดียวกัน
5. class ที่อยู่ต่าง package กัน และไม่เป็น subclass
สำหรับค่า Accessibility แบ่งออกเป็น 4 ชนิด ได้แก่
1. Public เรียกใช้ variable หรือ method ได้ไม่ว่าอยู่ class หรือ package ใดก็ตาม
2. Private เรียกใช้ variable หรือ method ได้เฉพาะภายในclass เท่านั้น class อื่นเรียกใช้ไม่ได้
3. Protect ใช้ได้เหมือน Public รวมทั้ง class ที่เป็น subclass แต่กรณีที่อยู่ต่าง package กัน จะใช้ไม่ได้
4. Default กรณีที่ไม่กำหนดค่า Accessibility ไว้ จะหมายถึงค่า default โดยจะใช้ได้เฉพาะ class และ subclass ที่อยู่ใน package เดียวกัน (ต่าง package จะใช้ไม่ได้)
ตารางในการสรุปความสามารถในการเรียกใช้ variable หรือ method ร่วมกันของ class และ subclass ต่างๆ