Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง Access Modifiers และ Non-Access Modifiers ใน Java

Access Modifiers

Access modifiers คือ keywords ที่ใช้กับ classes, variables, methods, และ constructors เพื่อควบคุม access level ของพวกมัน

มี access modifiers 4 ตัวใน Java:

  • Default

    เมื่อไม่ระบุ access modifier Java จะถือว่าเป็น default modifier Scope ของ default modifier จำกัดเฉพาะ ภายในแพ็กเกจ
  • Public

    Scope ของ public modifier คือเข้าถึงได้ ทุกที่ แม่นอกแพ็กเกจ
  • Private

    Scope ของ private modifier คือเข้าถึงได้ ภายในคลาสตัวมันเองเท่านั้น
  • Protected

    Scope ของ protected modifier จำกัด ภายในแพ็กเกจและทุก subclasses

Non-access Modifiers

Non-access modifiers คือ keywords ที่ไม่เกี่ยวข้องกับ access level แตให้ special functionality เมื่อระบุ

  • Final

    Final keyword ใช้กับ variable, method หรือ class ป้องกันไม่ให้แก้ไขเนื้อหา ตอนประกาศกับ class ป้องกันไม่ให้ extend ได้
  • Static

    Static modifier ใช้กับ class variables และ methods ที่เข้าถึงได้ โดยไม่ต้องมี instance ของคลาส Static variables มี single storage ทุก objects แชร์ single storage เดียวกัน เข้าถึงได้โดยตรงไม่ต้อง object Static methods ก็สามารถประกาศได้ main() method เป็น static method ยอดนิยม Static blocks ก็สามารถประกาศได้ และ execute ก่อน main() method
  • Abstract

    abstract ใช้กับ class และ methods Abstract class ไม่สามารถ instantiate ได้ วัตถุประสงค์คือเพื่อถูก extend Abstract methods ประกาศโดยไม่มี body และจบด้วย semicolon ถ้าคลาสมี abstract method ควรระบุว่า abstract ด้วย คลาสที่ extend abstract class ต้อง implement abstract methods ทั้งหมด
  • Synchronized

    ระบุว่าเมธอดสามารถเข้าถึงได้โดย หนึ่ง thread ในเวลาเดียวกัน
  • Transient

    Instance variable ถูก mark เป็น transient เพื่อบอก JVM ให้ ข้าม variable นั้น ตอน serialize object ที่ contain มัน
  • Volatile

    Volatile keyword ใช้ mark java variable ว่า "being stored in main memory" หมายถึงทุกการอ่าน volatile variable จะอ่านจาก main memory ของคอมพิวเตอร์ ไม่ใช่ CPU cache และการเขียน volatile variable จะเขียนไป main memory ไม่ใช่แค่ CPU cache
  • Strictfp

    Strictfp keyword ใน java รับรองว่าจะได้ผลลัพธ์เดียวกันบนทุก platform หากทำ operations บน floating-point variable