บทความที่ได้รับความนิยม

วันศุกร์ที่ 1 กรกฎาคม พ.ศ. 2554

Java Package Scope

สวัสดีค่ะ วันนี้เราจะมาพูดถึง Scope ของ Java กันน่ะค่ะ
     
          Scope ที่เราจะพูดถึงกันก็คือ การควบคุมการเข้าถึง methods, attributes ของ java หรือการกำหนดว่า classes อื่นนั้นจะสามารถเข้าถึง attributes นี้หรือเรียก methods นี้ใน class เราได้หรือเปล่า

ใน Java จึงมีการใช้ Modifiers คือ public, protected และ private และ ไม่ใส่ modifier หรือว่า default


       Modifiers ต่างๆ เมื่อใช้วางไว้ข้างหน้า จะกำหนดสิทธิการเข้าถึงตามนี้ แบ่งเป็น 2 ระดับคือ ระดับ classes (ตัว class เอง) และ ระดับ class member (attributes และ  methods)

               -----------การเข้าถึงในระดับ Class -----------


public : classes อื่นๆทุก classes สามารถใช้ class นี้ได้

default  : เรียกอีกอย่างว่า package-private  ถ้าไม่ใส่ modifier เฉพาะ classes ที่อยู่ใน package เดียวกันเท่านั้นที่เรียกใช้ได้

                      -----------การเข้าถึงในระดับ Class Member-----------

     สามารถใช้ public และ default ได้ผลเหมือนกับในระดับ class แต่ในระดับ member มี modifier เพิ่มอีก 2 ตัวคือ

protected member จะถูกใช้ได้ภายใน package และ  subclasses ของมันเท่านั้น

private :  member จะถูกใช้ได้แค่ภายใน class ของมันเท่านั้น


        ดังตารางที่แสดงให้เห็นถึงผลกระทบของ modifiers สำหรับ class member

                                              ◆ = Can Access  = No Access


การควบคุมการเข้าถึงที่  java  มีให้เราเลือกใช้ยังไม่หมดค่ะ
ในกรณีที่เรามี package 2  package คือ Package One และ  Package Two 
Package One :  มี  class Alpha และ     Beta
Package Two :  มี  class AlphaSub (subclass ของ Alpha) และ Gamma

    
  ตารางแสดงว่า member ใน class Alpha จะสามารถถูกใช้ได้จาก class ไหนบ้าง เมื่อใช้ modifiers  ต่างๆ


   เมื่อใช้ public ทุก class จะเห็นหมด
   เมื่อใช้ protected   class ใน package เดียวกัน (Package One) และ subclass จะเห็น
   เมื่อไม่ใช้  modifier  class ใน package เดียวกันเท่านั้นจะเห็น
   เมื่อใช้ private    จะเห็นได้ภายใน class มันเท่านั้น


// หวังว่าเพื่อนๆ จะได้นำไปใช้กันได้อย่างถูกต้องน่ะค่ะ ***

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

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