ความแตกต่างระหว่าง Static และ Final ใน Java
เนื้อหา
คงที่และสุดท้ายคือคำหลักที่ใช้ใน Java สมาชิกแบบสแตติกสามารถเข้าถึงได้ก่อนที่จะสร้างวัตถุคลาส ขั้นสุดท้ายมีผลกระทบที่แตกต่างกันเมื่อนำไปใช้กับคลาสวิธีการและตัวแปร ความแตกต่างที่สำคัญระหว่างคำหลักคงที่และสุดท้ายคือ คงที่ is keyword ใช้เพื่อกำหนดสมาชิกคลาสที่สามารถใช้อย่างเป็นอิสระจากอ็อบเจ็กต์ใด ๆ ของคลาสนั้น สุดท้าย คำหลักที่ใช้ในการประกาศตัวแปรคงที่วิธีการที่ไม่สามารถแทนที่และชั้นเรียนที่ไม่สามารถสืบทอด
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | คงที่ | สุดท้าย |
---|---|---|
เหมาะสม | คำหลักคงที่สามารถใช้งานได้กับระดับคงที่ตัวแปรวิธีและบล็อกที่ซ้อนกัน | คำหลักสุดท้ายใช้กับคลาสวิธีและตัวแปร |
การเริ่มต้น | มันไม่ได้บังคับให้เริ่มต้นตัวแปรแบบคงที่ในเวลาที่ประกาศ | มันเป็นภาคบังคับที่จะเริ่มต้นตัวแปรสุดท้ายในเวลาที่ประกาศ |
การแก้ไข | ตัวแปรคงที่สามารถเริ่มต้นใหม่ได้ | ตัวแปรสุดท้ายไม่สามารถเริ่มต้นใหม่ได้ |
วิธีการ | วิธีการคงที่สามารถเข้าถึงสมาชิกคงที่ของชั้นเรียนและสามารถเรียกได้โดยวิธีคงที่อื่น ๆ | วิธีสุดท้ายไม่สามารถสืบทอดได้ |
ชั้น | วัตถุคลาสคงที่ไม่สามารถสร้างได้และมีเพียงสมาชิกแบบสแตติกเท่านั้น | คลาสสุดท้ายไม่สามารถสืบทอดโดยคลาสใด ๆ |
กลุ่ม | บล็อกแบบคงที่ใช้ในการเริ่มต้นตัวแปรคงที่ | คำหลักสุดท้ายสนับสนุนไม่มีบล็อกดังกล่าว |
คำจำกัดความของสแตติก
คงที่เป็นคำหลักที่ใช้กับชั้นเรียนตัวแปรวิธีการและบล็อก สมาชิกคลาสคลาสและบล็อกสามารถสร้างแบบสแตติกโดยใช้คีย์เวิร์ด“ สแตติก” ด้านหน้าชื่อของสมาชิกคลาสคลาสและบล็อกตามลำดับ เมื่อสมาชิกคลาสถูกประกาศเป็นสแตติกมันจะกลายเป็นโกลบอลสำหรับสมาชิกคนอื่น ๆ ทั้งหมดของชั้นเรียน สมาชิกแบบคงที่ของคลาสไม่ครอบครองหน่วยความจำตามแต่ละอินสแตนซ์นั่นคือวัตถุทั้งหมดใช้สำเนาสมาชิกแบบคงที่เดียวกัน สมาชิกแบบคงที่สามารถใช้เป็นอิสระจากวัตถุใด ๆ ของชั้นเรียนนั้น คุณสามารถเข้าถึงสมาชิกแบบคงที่ของคลาสก่อนที่จะสร้างวัตถุ ตัวอย่างที่ดีที่สุดของสมาชิกแบบสแตติกคือเมธอด 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; คลาสตัวแปรและเมธอดสามารถประกาศเป็นขั้นสุดท้ายได้
- คำหลักคงที่สามารถใช้งานได้กับระดับคงที่ตัวแปรวิธีและบล็อกที่ซ้อนกัน ในทางกลับกันคำหลักสุดท้ายจะใช้กับวิธีการเรียนและตัวแปร
- ตัวแปรแบบคงที่สามารถเริ่มต้นได้ตลอดเวลาในขณะที่ตัวแปรสุดท้ายจะต้องเริ่มต้นในเวลาที่ประกาศ
- ตัวแปรแบบคงที่สามารถเริ่มต้นใหม่ได้ในขณะที่เมื่อเริ่มต้นตัวแปรสุดท้ายจะไม่สามารถเริ่มต้นใหม่ได้
- วิธีการคงที่สามารถเข้าถึงสมาชิกคงที่ของชั้นเรียนและสามารถเรียกใช้โดยวิธีคงที่อื่น ๆ ในอีกทางหนึ่งวิธีสุดท้ายไม่สามารถสืบทอดโดยชั้นเรียนใด ๆ
- บล็อกแบบคงที่ใช้ในการเริ่มต้นตัวแปรแบบคงที่ในขณะที่คำหลักสุดท้ายไม่สนับสนุนบล็อกใด ๆ
สรุป:
คำหลักทั้งแบบคงที่และขั้นสุดท้ายแก้ไขวัตถุประสงค์ที่แตกต่างกันเมื่อนำไปใช้กับคลาสตัวแปรและวิธีการ