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 ตัวคือ
private : member จะถูกใช้ได้แค่ภายใน class ของมันเท่านั้น
ดังตารางที่แสดงให้เห็นถึงผลกระทบของ modifiers สำหรับ class member
การควบคุมการเข้าถึงที่ java มีให้เราเลือกใช้ยังไม่หมดค่ะ
ในกรณีที่เรามี package 2 package คือ Package One และ Package Two
Package One : มี class Alpha และ Beta
Package Two : มี class AlphaSub (subclass ของ Alpha) และ Gamma
เมื่อใช้ public ทุก class จะเห็นหมด
เมื่อใช้ protected class ใน package เดียวกัน (Package One) และ subclass จะเห็น
เมื่อไม่ใช้ modifier class ใน package เดียวกันเท่านั้นจะเห็น
เมื่อใช้ private จะเห็นได้ภายใน class มันเท่านั้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น