ความแตกต่างระหว่าง Static และ Final ใน Java

ผู้เขียน: Laura McKinney
วันที่สร้าง: 2 เมษายน 2021
วันที่อัปเดต: 5 พฤษภาคม 2024
Anonim
Types of Constants in Java #Global Constant & Object Constant #static, final data
วิดีโอ: Types of Constants in Java #Global Constant & Object Constant #static, final data

เนื้อหา


คงที่และสุดท้ายคือคำหลักที่ใช้ใน Java สมาชิกแบบสแตติกสามารถเข้าถึงได้ก่อนที่จะสร้างวัตถุคลาส ขั้นสุดท้ายมีผลกระทบที่แตกต่างกันเมื่อนำไปใช้กับคลาสวิธีการและตัวแปร ความแตกต่างที่สำคัญระหว่างคำหลักคงที่และสุดท้ายคือ คงที่ is keyword ใช้เพื่อกำหนดสมาชิกคลาสที่สามารถใช้อย่างเป็นอิสระจากอ็อบเจ็กต์ใด ๆ ของคลาสนั้น สุดท้าย คำหลักที่ใช้ในการประกาศตัวแปรคงที่วิธีการที่ไม่สามารถแทนที่และชั้นเรียนที่ไม่สามารถสืบทอด

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบคงที่สุดท้าย
เหมาะสมคำหลักคงที่สามารถใช้งานได้กับระดับคงที่ตัวแปรวิธีและบล็อกที่ซ้อนกันคำหลักสุดท้ายใช้กับคลาสวิธีและตัวแปร
การเริ่มต้นมันไม่ได้บังคับให้เริ่มต้นตัวแปรแบบคงที่ในเวลาที่ประกาศมันเป็นภาคบังคับที่จะเริ่มต้นตัวแปรสุดท้ายในเวลาที่ประกาศ
การแก้ไขตัวแปรคงที่สามารถเริ่มต้นใหม่ได้ตัวแปรสุดท้ายไม่สามารถเริ่มต้นใหม่ได้
วิธีการวิธีการคงที่สามารถเข้าถึงสมาชิกคงที่ของชั้นเรียนและสามารถเรียกได้โดยวิธีคงที่อื่น ๆวิธีสุดท้ายไม่สามารถสืบทอดได้
ชั้นวัตถุคลาสคงที่ไม่สามารถสร้างได้และมีเพียงสมาชิกแบบสแตติกเท่านั้นคลาสสุดท้ายไม่สามารถสืบทอดโดยคลาสใด ๆ
กลุ่มบล็อกแบบคงที่ใช้ในการเริ่มต้นตัวแปรคงที่คำหลักสุดท้ายสนับสนุนไม่มีบล็อกดังกล่าว


คำจำกัดความของสแตติก

คงที่เป็นคำหลักที่ใช้กับชั้นเรียนตัวแปรวิธีการและบล็อก สมาชิกคลาสคลาสและบล็อกสามารถสร้างแบบสแตติกโดยใช้คีย์เวิร์ด“ สแตติก” ด้านหน้าชื่อของสมาชิกคลาสคลาสและบล็อกตามลำดับ เมื่อสมาชิกคลาสถูกประกาศเป็นสแตติกมันจะกลายเป็นโกลบอลสำหรับสมาชิกคนอื่น ๆ ทั้งหมดของชั้นเรียน สมาชิกแบบคงที่ของคลาสไม่ครอบครองหน่วยความจำตามแต่ละอินสแตนซ์นั่นคือวัตถุทั้งหมดใช้สำเนาสมาชิกแบบคงที่เดียวกัน สมาชิกแบบคงที่สามารถใช้เป็นอิสระจากวัตถุใด ๆ ของชั้นเรียนนั้น คุณสามารถเข้าถึงสมาชิกแบบคงที่ของคลาสก่อนที่จะสร้างวัตถุ ตัวอย่างที่ดีที่สุดของสมาชิกแบบสแตติกคือเมธอด main () มันถูกประกาศแบบคงที่เพื่อให้สามารถเรียกใช้ก่อนที่วัตถุใด ๆ ที่มีอยู่ แบบฟอร์มทั่วไปในการเข้าถึงสมาชิกแบบคงที่ของคลาส:

class_name.static_member // การเข้าถึงสมาชิกแบบคงที่ของคลาส

ในโค้ดข้างต้น class_name คือชื่อของคลาสที่กำหนด static_member สมาชิกแบบคงที่สามารถเป็นตัวแปรแบบคงที่หรือวิธีการแบบคงที่

ตัวแปรแบบคงที่:

  • ตัวแปรคงที่ทำหน้าที่เหมือนตัวแปรทั่วโลกสำหรับสมาชิกข้อมูลอื่น ๆ ทั้งหมดของชั้นเรียน
  • ตัวแปรสแตติกสามารถเข้าถึงได้ก่อนวัตถุใด ๆ ของชั้นที่มีอยู่
  • ตัวแปรสแตติกสามารถเข้าถึงได้ด้วยชื่อคลาสที่ถูกกำหนดตามด้วยตัวดำเนินการ dot (.)

วิธีการคงที่:


  • วิธีการแบบคงที่สามารถเรียกวิธีการแบบคงที่อื่นเท่านั้น
  • วิธีการแบบคงที่สามารถเข้าถึงข้อมูลแบบคงที่เท่านั้น
  • วิธีการคงที่ไม่สามารถอ้างถึง "นี้" หรือ "super" ในเงื่อนไขใด ๆ
  • เมธอดสแตติกสามารถเข้าถึงได้ด้วยชื่อคลาสที่ถูกกำหนดตามด้วยตัวดำเนินการ dot (.)

ชั้นคงที่:

  • Java มีแนวคิดของคลาสคงที่ซ้อนกัน ชั้นนอกสุดไม่สามารถทำให้คงที่ได้ในขณะที่ชั้นในสุดสามารถทำให้คงที่ได้
  • คลาสที่ซ้อนแบบคงที่ไม่สามารถเข้าถึงสมาชิกที่ไม่คงที่ของคลาสภายนอก
  • มันสามารถเข้าถึงสมาชิกคงที่ของชั้นนอก

บล็อกคงที่:

บล็อกแบบสแตติกถูกดำเนินการเพียงครั้งเดียวเมื่อโหลดคลาส ใช้ในการเริ่มต้นตัวแปรคงที่ของชั้นเรียน

C ++:

ใน C ++ เรามีแนวคิดของตัวแปรสแตติกเช่นเดียวกับฟังก์ชั่นคงที่ในขณะที่ C ++ ไม่สนับสนุนคลาสคงที่

C #:

C # รองรับคลาสสแตติกตัวแปรสแตติกและคลาสสแตติกเช่นกัน

Java:

Java รองรับคลาสที่ซ้อนกันแบบคงที่ตัวแปรคงที่วิธีการแบบคงที่

ความหมายของรอบชิงชนะเลิศ

Final เป็นคีย์เวิร์ดที่ใช้กับคลาสตัวแปรและเมธอด คลาสตัวแปรและวิธีการประกาศเป็นขั้นสุดท้ายโดยใช้คำหลัก "สุดท้าย" นำหน้าด้วยชื่อของพวกเขา เมื่อตัวแปรถูกประกาศว่าเป็นที่สุด ไม่สามารถแก้ไขเพิ่มเติมได้ในโปรแกรม ตัวแปรสุดท้ายจะต้องเริ่มต้น ณ เวลาที่ประกาศ ตัวแปรสุดท้ายไม่ได้ครอบครองหน่วยความจำตามแต่ละอินสแตนซ์ อ็อบเจ็กต์ทั้งหมดของคลาสแบ่งใช้สำเนาเดียวกันของตัวแปรสุดท้าย

วิธีการประกาศเป็นขั้นสุดท้ายไม่สามารถแทนที่โดยคลาสย่อยของคลาสนั้นซึ่งมีการประกาศวิธีการขั้นสุดท้าย เมื่อคลาสได้รับการประกาศให้เป็นคลาสสุดท้ายอื่นจะไม่สามารถสืบทอดคลาสสุดท้ายนั้นได้ C ++, C # ไม่สนับสนุนแนวคิดหากคำหลักสุดท้าย Java สนับสนุนแนวคิดของคำหลักสุดท้ายและใน Java; คลาสตัวแปรและเมธอดสามารถประกาศเป็นขั้นสุดท้ายได้

  1. คำหลักคงที่สามารถใช้งานได้กับระดับคงที่ตัวแปรวิธีและบล็อกที่ซ้อนกัน ในทางกลับกันคำหลักสุดท้ายจะใช้กับวิธีการเรียนและตัวแปร
  2. ตัวแปรแบบคงที่สามารถเริ่มต้นได้ตลอดเวลาในขณะที่ตัวแปรสุดท้ายจะต้องเริ่มต้นในเวลาที่ประกาศ
  3. ตัวแปรแบบคงที่สามารถเริ่มต้นใหม่ได้ในขณะที่เมื่อเริ่มต้นตัวแปรสุดท้ายจะไม่สามารถเริ่มต้นใหม่ได้
  4. วิธีการคงที่สามารถเข้าถึงสมาชิกคงที่ของชั้นเรียนและสามารถเรียกใช้โดยวิธีคงที่อื่น ๆ ในอีกทางหนึ่งวิธีสุดท้ายไม่สามารถสืบทอดโดยชั้นเรียนใด ๆ
  5. บล็อกแบบคงที่ใช้ในการเริ่มต้นตัวแปรแบบคงที่ในขณะที่คำหลักสุดท้ายไม่สนับสนุนบล็อกใด ๆ

สรุป:

คำหลักทั้งแบบคงที่และขั้นสุดท้ายแก้ไขวัตถุประสงค์ที่แตกต่างกันเมื่อนำไปใช้กับคลาสตัวแปรและวิธีการ