Tuesday, 4 March 2008

ความแตกต่างระหว่าง Default , Public , Private , Protected ใน Java (J2SE)

ในส่วนของ Java ถ้าไม่พูดถึง Access Modifier เลยก็คงไม่ได้นะครับ จะว่าเป็นพระเอกของ Encapsulation กับ Information Hiding เลยทีเดียว วิธีใช้ Access Modifier สำหรับทั้ง 4 อย่างนี้ก็สามารถใช้ได้ตั้งแต่

  • class
  • local variable
  • global variable
  • method
  • constructor
ความแตกต่างของ Access Modifier ทั้ง 4 อันนี้ผมจะอธิบายแบบง่ายๆตามที่ผมได้เรียนมานะครับ

public หรือสาธารณะเมื่อเราประกาศแบบนี้แล้ว class อื่นสามารถเข้าถึง class , variable หรือ method นี้ได้โดยอิสระ

private หรือส่วนตัวเมื่อเราใช้การประกาศแบบนี้แล้ว class อื่นๆจะไม่สามารถเข้าถึงได้เลยและถึงแม้จะทำการ inheritance ก็ไม่สามารถเข้าถึง variable , method ได้ (แต่ส่วนใหญ่ variable จะเข้าถึงได้ผ่านทาง method ถ้า inheritance มาแล้วมีการทำ get set)

protected หรือเก็บไว้ให้ลูกดังนั้นตัวแม่ ไม่สามารถใช้งานในส่วนนี้ได้ ผู้เรียกใช้ก็ไม่สามารถใช้งานได้ ยกเว้นแต่ทำการ inheritance มันแล้วเรียกจากตัวลูกจะถูกสามารถเรียกใช้งานได้

สุดท้าย default (หรือปกติที่ไม่ต้องเติมอะไรเลย) จะสามารถถูกเข้าถึงได้เกือบเหมือน public แต่จะต่างตรงที่จะสามารถถูกเข้าถึงได้จาก package เดียวกันเท่านั้น

โดยในการทำ Encapsulation และ Information Hiding ทุก Access Modifier 4 ตัวนี้มีความสำคัญในการออกแบบมากโดยวันนี้ผมก็ทิ้งท้ายด้วยตาราง Modifier-Element : Matrix in Java

1 comment:

Unknown said...

ขอบคุณมากๆครับ