บทความนี้จะวิเคราะห์คำหลัก Java ทั่วไปเป็นหลัก ได้แก่ Final, Static, Super และรายละเอียดนี้เพื่ออำนวยความสะดวกในการอ้างอิงของผู้อ่าน รายละเอียดมีดังนี้:
1. สุดท้าย
1) แก้ไขคลาส:
บ่งชี้ว่าคลาสนี้ไม่สามารถสืบทอดได้
2) แก้ไขวิธีการ (วิธี)
บ่งชี้ว่าวิธีนี้ไม่สามารถแทนที่ (@override)
3) แก้ไขตัวแปร (ตัวแปร)
บ่งชี้ว่าค่าของตัวแปรนี้ไม่สามารถเปลี่ยนแปลงได้ในภายหลัง มักใช้เพื่อแก้ไขค่าคงที่ที่ไม่เปลี่ยนรูป
หมายเหตุ: สุดท้าย หมายถึง "สุดท้าย" และ "ไม่เปลี่ยนแปลง" จะสะดวกกว่าในการจดจำโดยรวมความหมาย
2. คงที่ (มักใช้วิธีที่สองและสาม)
1) แก้ไขคลาส:
(ที่ไม่ได้ใช้กันทั่วไป) สามารถใช้เพื่อแก้ไขคลาสภายในเท่านั้นไม่อนุญาตให้ประกาศด้วยวิธีนี้
2) แก้ไขวิธีการ (วิธี)
วิธีการคงที่เป็นของคลาส (ใช้ร่วมกันระหว่างวัตถุ) ไม่ใช่ของวัตถุบางอย่าง ไม่จำเป็นต้องสร้างวัตถุ คุณสามารถใช้ชื่อคลาสเพื่อเรียกเมธอดนี้ได้
(เมื่อโปรแกรมถูกดำเนินการ รหัสไบต์ของคลาสจะถูกโหลดลงในหน่วยความจำ เมื่อคลาสไม่ได้สร้างวัตถุ ตัวแปรคลาสจะได้รับการจัดสรรหน่วยความจำ และตัวแปรอินสแตนซ์จะถูกจัดสรรพื้นที่หน่วยความจำเฉพาะเมื่อมีการสร้างวัตถุเฉพาะเท่านั้น )
3) แก้ไขตัวแปร (ตัวแปร)
เช่นเดียวกับ 2) ตัวแปรจะถูกแชร์ในระดับชั้นเรียนและไม่จำเป็นต้องสร้างออบเจ็กต์ แต่การเปลี่ยนแปลงค่าของตัวแปรจะเป็นค่าปริพันธ์ กล่าวคือ หากออบเจ็กต์ A เปลี่ยนค่าของตัวแปรคงที่โดยการดำเนินการ จากนั้นวัตถุ B จะทำงานบนนั้นคือตัวแปรคงที่ที่เปลี่ยนแปลง
หมายเหตุ: บล็อกโค้ดที่ถูกแก้ไขด้วยสแตติกเรียกว่าบล็อกโค้ดแบบคงที่ โค้ดบล็อกแบบคงที่จะถูกดำเนินการก่อนเมื่อ JVM โหลดคลาสไม่ว่าจะอยู่ที่ใด บล็อกเหล่านั้นจะถูกดำเนินการก่อน จากนั้นจึงทำการบล็อกโค้ดปกติ สามารถมีบล็อกโค้ดแบบคงที่ได้หลายบล็อก ซึ่ง JVM จะดำเนินการตามลำดับที่ปรากฏ แต่ละบล็อกโค้ดจะถูกดำเนินการเพียงครั้งเดียวเท่านั้น
คำสำคัญ this และ super ไม่สามารถปรากฏในวิธีการคงที่ได้
3. super: (หมายถึงการอ้างอิงถึงคลาสผู้ปกครอง)
1) เกี่ยวข้องกับคลาส (คลาสพาเรนต์หรือที่เรียกว่าซูเปอร์คลาส):
เรียกตัวสร้างคลาสพาเรนต์ผ่าน super(พารามิเตอร์ 1, พารามิเตอร์ 2,..., พารามิเตอร์ n);
2) เกี่ยวข้องกับวิธีการ (วิธีการ)
super.Method(พารามิเตอร์ 1, พารามิเตอร์ 2,..., พารามิเตอร์ n) เรียกเมธอดที่ถูกแทนที่ของคลาสพาเรนต์
3) เกี่ยวข้องกับตัวแปร (ตัวแปร)
super.variable เรียกตัวแปรของคลาสพาเรนต์
หมายเหตุ: super ต้องใช้ในบรรทัดแรกของตัวสร้างคลาสย่อย
เมื่อคลาสพาเรนต์ไม่มีคอนสตรัคเตอร์ที่ไม่มีพารามิเตอร์ คลาสย่อยจำเป็นต้องใช้ super เพื่อเรียกคอนสตรัคเตอร์ของคลาสพาเรนต์อย่างชัดเจน โดยอ้างถึงการอ้างอิงถึงคลาสพาเรนต์
4. สิ่งนี้: (อ้างอิงถึงวัตถุปัจจุบัน)
1) ชั้นเรียนที่เกี่ยวข้อง:
นี่ (พารามิเตอร์ 1, พารามิเตอร์ 2,..., พารามิเตอร์ n) นี่เป็นคอนสตรัคเตอร์ธรรมดาเท่านั้น มีเพียงคอนสตรัคเตอร์ (อื่นๆ) เท่านั้นที่สามารถเรียกคอนสตรัคเตอร์ (นี่) และฟังก์ชันทั่วไปไม่สามารถเรียกคอนสตรัคเตอร์ได้
2) วิธีการที่เกี่ยวข้อง:
เรียกวิธีการบนวัตถุปัจจุบัน
3) ตัวแปร (ตัวแปร) ที่เกี่ยวข้อง:
เรียกตัวแปรของวัตถุปัจจุบัน
หมายเหตุ: this(); และ super(); การเรียก Constructor อย่างชัดเจนสามารถวางไว้ในบรรทัดแรกของการก่อสร้างเท่านั้น
this.method..();super.method..(); สามารถวางไว้ที่ใดก็ได้และใช้เป็นวิธีการปกติ
มีความแตกต่างอย่างมากระหว่างตัวสร้างและวิธีการที่ใช้คีย์เวิร์ดนี้ วิธีการอ้างอิงชี้ไปที่อินสแตนซ์ของคลาสที่วิธีการนั้นกำลังถูกดำเนินการ วิธีการแบบคงที่ไม่สามารถใช้คำสำคัญนี้ได้ เนื่องจากวิธีการแบบคงที่ไม่ได้อยู่ในอินสแตนซ์ของคลาส ดังนั้นจึงไม่มีอะไรจะชี้ไป ตัวสร้างนี้ชี้ไปที่ตัวสร้างอื่นในคลาสเดียวกันที่มีรายการพารามิเตอร์ต่างกัน