แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

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

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

พื้นฐานสำหรับการเปรียบเทียบสุดท้ายในที่สุดจบ
ขั้นพื้นฐานFinal คือ "Keyword" และ "access modifier" ใน Javaในที่สุดก็คือ "บล็อก" ใน Javaจบเป็นวิธีการ "" ใน Java
เหมาะสมFinal เป็นคำสำคัญที่ใช้กับคลาสตัวแปรและวิธีการสุดท้ายคือบล็อกที่เกี่ยวข้องกับการลองและจับบล็อกเสมอfinalize () เป็นวิธีการที่ใช้กับวัตถุ
การทำงาน(1) ตัวแปรสุดท้ายกลายเป็นค่าคงที่และไม่สามารถกำหนดใหม่ได้
(2) วิธีการสุดท้ายไม่สามารถถูกแทนที่โดยชั้นเรียนเด็ก
(3) คลาสสุดท้ายไม่สามารถขยายได้
บล็อก "สุดท้าย" ล้างข้อมูลทรัพยากรที่ใช้ในบล็อก "ลอง"วิธีการสุดท้ายจะทำการล้างกิจกรรมที่เกี่ยวข้องกับวัตถุก่อนที่มันจะถูกทำลาย
การกระทำวิธีการสุดท้ายจะดำเนินการตามการโทร"ในที่สุด" บล็อกดำเนินการหลังจากการดำเนินการของ "ลองจับ" บล็อกfinalize () วิธีการดำเนินการก่อนที่จะทำลายวัตถุ

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

“ Final” เป็นคำสำคัญใน Java มันเป็นตัวดัดแปลงการเข้าถึง คำหลัก "ขั้นสุดท้าย" ใช้ได้กับคลาสวิธีการและตัวแปร ให้เราดูว่ามันทำงานอย่างไรกับพวกเขาแต่ละคน

ตัวแปรสุดท้าย

  • เมื่อคำหลักสุดท้ายถูกนำไปใช้กับตัวแปรมันไม่สามารถแก้ไขเพิ่มเติมได้
  • ตัวแปรสุดท้ายจะต้องเริ่มต้นเมื่อมีการประกาศ
  • ในแบบแผนการเข้ารหัสทั่วไปตัวแปรขั้นสุดท้ายจะถูกประกาศใน UPPERCASE
  • ตัวแปรสุดท้ายไม่ได้ใช้หน่วยความจำในแต่ละอินสแตนซ์
 สุดท้าย int FILE_OPEN = 2; 

วิธีการขั้นสุดท้าย

  • เมื่อเมธอดในคลาสได้รับการประกาศเป็นขั้นสุดท้ายจะไม่สามารถแทนที่ทับคลาสย่อยได้
  • วิธีการขนาดเล็กที่ถูกประกาศครั้งสุดท้ายสามารถสร้าง "อินไลน์" โดยคอมไพเลอร์ซึ่งจะลดค่าใช้จ่ายของการเรียกใช้ฟังก์ชั่นและเพิ่มการปรับปรุงประสิทธิภาพ
  • การเรียกเมธอด Overridden ได้รับการแก้ไขแบบไดนามิก แต่เมื่อมีการประกาศเมธอดเป็นครั้งสุดท้ายจะไม่สามารถแทนที่ได้ ดังนั้นการเรียกฟังก์ชั่นสามารถแก้ไขได้ในเวลารวบรวม
 คลาส A {final void meth สุดท้าย () {System.out.println ("นี่เป็นวิธีสุดท้าย"); }} คลาส B ขยาย A {void meth () {// Clas B ไม่สามารถรับเมธอดของคลาส A. System.out.println ("Does not override"); }} 

ชั้นสุดท้าย

  • เมื่อคลาสถูกประกาศเป็นขั้นสุดท้ายคลาสนั้นจะไม่สามารถสืบทอดได้โดยคลาสย่อยใด ๆ
  • การประกาศคลาสเป็นครั้งสุดท้ายจะประกาศวิธีการทั้งหมดโดยอัตโนมัติ
  • คุณไม่สามารถประกาศคลาสได้ทั้ง "นามธรรม" และ "ขั้นสุดท้าย"
 คลาส A สุดท้าย {{// ... } คลาส B ขยาย A {// คลาส B ไม่สามารถรับคลาส A // ... } ได้ 

คำจำกัดความของที่สุด

  • ใน Java“ ในที่สุด” เป็นบล็อกที่เกี่ยวข้องกับบล็อก try / catch เสมอ
  • บล็อก“ สุดท้าย” จะดำเนินการหลังจากบล็อก try / catch และก่อนโค้ดต่อจาก try / catch block
  • บล็อก "ในที่สุด" จะดำเนินการไม่ว่าจะมีข้อยกเว้นโยนหรือไม่
  • เมื่อมีการโยนข้อยกเว้นและไม่มีการจับบล็อกที่ตรงกับข้อยกเว้นแม้กระทั่งบล็อก "ในที่สุด" จะถูกดำเนินการ
  • เมื่อเมธอดกลับไปยังผู้เรียกจากภายในบล็อก try / catch ผ่านข้อยกเว้นที่ไม่ได้ตรวจสอบหรือคำสั่งการส่งคืนอย่างชัดเจนบล็อก "ในที่สุด" จะถูกดำเนินการก่อนที่เมธอดจะส่งกลับไปยังผู้โทร
  • บล็อก "สุดท้าย" ใช้สำหรับล้างทรัพยากรหรือเพิ่มหน่วยความจำที่ใช้ในบล็อก "ลอง"
  • บล็อก“ ในที่สุด” เป็นทางเลือก แต่เป็นแนวปฏิบัติที่ดีในการเขียนบล็อกในที่สุดหลังจากลอง / จับบล็อก
 ชั้นสุดท้ายตัวอย่าง {// วิธีนี้จะโยนข้อยกเว้นออกจากวิธีการ static void procA () {ลอง {System.out.println ("inside procA"); โยน RuntimeException ใหม่ ("ตัวอย่าง"); } ในที่สุด {System.out.println ("procA's ที่สุด"); }} // กลับจากภายในบล็อกลอง static void procB () {ลอง {System.out.println ("inside procB"); กลับ; } ในที่สุด {System.out.println ("procB ในที่สุด"); }} // ดำเนินการบล็อกการลองตามปกติ static void procC () {ลอง {System.out.println ("inside procC"); } ในที่สุด {System.out.println ("procC ในที่สุด"); }} โมฆะคงที่สาธารณะหลัก (String args []) {ลอง {procA (); } catch (Exception e) {System.out.println ("จับข้อยกเว้น"); } procB (); procC (); }} // เอาท์พุทภายใน procA ของ procA ในที่สุดข้อยกเว้นติดอยู่ใน procB ในที่สุด procB ใน procC ในที่สุด 

ความหมายของการจบ

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

รูปแบบทั่วไปของวิธีการจบ () มีดังนี้

 โมฆะป้องกันการทำให้จบ () {// รหัสสุดท้ายที่นี่} 

มีการประกาศวิธีการสุดท้ายว่าได้รับการป้องกันเพื่อที่จะไม่สามารถเข้าถึงได้จากนอกชั้นเรียน

วิธีนี้มักจะถูกเรียกก่อนการรวบรวมขยะ

ความแตกต่างที่สำคัญระหว่างรอบชิงชนะเลิศสุดท้ายและสุดท้าย

  1. คำหลักสุดท้ายคือตัวดัดแปลงการเข้าถึงในที่สุดก็คือบล็อกและจบเป็นวิธี
  2. คีย์เวิร์ด final ใช้กับคลาสตัวแปรและเมธอดของคลาสสุดท้ายคือบล็อกที่เกี่ยวข้องกับ try catch block ที่ใช้เพื่อจัดการกับข้อยกเว้นทำให้การสรุปเป็นวิธีการที่ทำงานกับวัตถุเท่านั้น
  3. ตัวแปรที่ถูกประกาศเมื่อครั้งสุดท้ายกลายเป็นค่าคงที่และไม่สามารถกำหนดอีกครั้งได้วิธีการที่ประกาศเป็นขั้นสุดท้ายจะไม่สามารถแทนที่ได้และคลาสที่ประกาศเมื่อครั้งสุดท้ายไม่สามารถสืบทอดได้ ในที่สุดบล็อกจะใช้ในการทำความสะอาดทรัพยากรที่ใช้โดยลองและจับบล็อก วิธีการสุดท้ายจะใช้ในการทำความสะอาดทรัพยากรที่ใช้โดยวัตถุก่อนที่วัตถุจะถูกทำลาย

สรุป:

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

Top