สุดท้าย:
ขั้นสุดท้ายช่วยให้คุณสามารถควบคุมได้ว่าสมาชิกวิธีการหรือชั้นเรียนของคุณสามารถเขียนทับหรือสืบทอดได้
เมื่อคุณกำหนดตัวแปรในชั้นเรียนให้เพิ่มคำหลักสุดท้ายก่อนหน้านี้นั่นหมายความว่าเมื่อตัวแปรนี้เริ่มต้นแล้วจะไม่สามารถเปลี่ยนแปลงได้ การอ้างอิงของพวกเขาไม่สามารถเปลี่ยนแปลงได้อีกต่อไป การเริ่มต้นของมันสามารถอยู่ในสองสถานที่หนึ่งคือคำจำกัดความของมันและอื่น ๆ คือในคอนสตรัคเตอร์หนึ่งสามารถเลือกหนึ่งในสองเท่านั้น
โปรแกรมต่อไปนี้แสดงให้เห็นถึงการใช้งานทั่วไปของรอบสุดท้าย:
การทดสอบระดับสาธารณะ {int สุดท้าย t = 1;
การใช้งานอีกอย่างคือการกำหนดพารามิเตอร์ในวิธีการสุดท้าย . ตัวแปรพารามิเตอร์นี้จะไม่ส่งผลกระทบต่อคำสั่งการเรียก แต่เป็นจริงสำหรับตัวแปรวัตถุเนื่องจากตัวแปรวัตถุถูกส่งผ่านไปยังการอ้างอิงเมื่อผ่านไปดังนั้นการปรับเปลี่ยนตัวแปรวัตถุในวิธีการของคุณจะส่งผลกระทบต่อคำสั่งการเรียก เมื่อคุณไม่จำเป็นต้องเปลี่ยนตัวแปรวัตถุเป็นพารามิเตอร์ในวิธีการการใช้งานขั้นสุดท้ายจะถูกประกาศอย่างชัดเจนซึ่งจะป้องกันไม่ให้คุณแก้ไขโดยไม่ได้ตั้งใจและส่งผลกระทบต่อวิธีการโทร
นอกจากนี้เมื่อใช้ตัวแปรพารามิเตอร์ในเมธอดในคลาสด้านในตัวแปรพารามิเตอร์นี้จะต้องประกาศขั้นสุดท้ายก่อนที่จะสามารถใช้งานได้ดังแสดงในรหัสต่อไปนี้:
การทดสอบระดับสาธารณะ {Void Print (String Final Str) {Class Innertest {Innertest () {System.out.println (STR); {ทดสอบ = การทดสอบใหม่ ();
มีเหตุผลสองประการที่วิธีการสุดท้ายประกาศวิธีการสุดท้าย ชั้นเรียนที่สืบทอดมาจากคลาสนี้ อย่างที่สองคือกลไกที่อนุญาตให้คอมไพเลอร์แปลงการโทรทั้งหมดไปยังวิธีนี้เป็นสายอินไลน์ (in-line) . เช่นการประหยัดจุดพัก, การกดสแต็ค ฯลฯ สิ่งนี้อาจปรับปรุงประสิทธิภาพของโปรแกรมของคุณ ดังนั้นคุณควรใช้ขั้นสุดท้ายเพื่อกำหนดวิธีการด้วยความระมัดระวัง
ชั้นเรียนสุดท้ายเมื่อคุณใช้ขั้นสุดท้ายในชั้นเรียนคุณต้องคิดอย่างรอบคอบเพราะชั้นเรียนสุดท้ายไม่สามารถสืบทอดได้โดยใครซึ่งหมายความว่าคลาสนี้เป็นชั้นเรียนใบไม้ในต้นไม้มรดกและชั้นเรียนนี้การออกแบบได้รับการพิจารณาสมบูรณ์แบบโดยไม่ต้อง การดัดแปลงหรือขยาย สำหรับสมาชิกในชั้นเรียนสุดท้ายคุณสามารถกำหนดได้ว่าเป็นที่สุดหรือไม่สุดท้าย สำหรับวิธีการเนื่องจากชั้นเรียนเป็นของสุดท้ายพวกเขาจะกลายเป็นที่สิ้นสุดตามธรรมชาติ นอกจากนี้คุณยังสามารถเพิ่มวิธีสุดท้ายในวิธีการในชั้นสุดท้ายได้อย่างชัดเจน แต่เห็นได้ชัดว่านี่ไม่สมเหตุสมผล
ในที่สุด:
คำหลักในที่สุดคือการเพิ่มที่ดีที่สุดในรูปแบบการจัดการข้อยกเว้น Java โครงสร้างในที่สุดอนุญาตให้รหัสดำเนินการเสมอโดยไม่คำนึงว่าข้อยกเว้นเกิดขึ้นหรือไม่ ใช้ในที่สุดเพื่อรักษาสถานะภายในของวัตถุและเพื่อทำความสะอาดทรัพยากรที่ไม่ใช่หน่วยความจำ ในที่สุดหากไม่มีรหัสของคุณจะสับสน ตัวอย่างเช่นรหัสต่อไปนี้แสดงให้เห็นถึงวิธีการเขียนรหัสไปยังทรัพยากรที่ไม่ใช่หน่วยความจำฟรีโดยไม่ต้องใช้ในที่สุด:
โมฆะสาธารณะ WriteFile (String Filepath, String filename, String args) พ่น IOException {FileWriter FW = FileWriter ใหม่ (FilePath + FileName); ();
รหัสนี้สร้างวัตถุ FileWriter และเรียกใช้วิธีการเขียน ก่อนที่จะออกจากวิธีการคุณต้องปิดวัตถุ FileWriter เพื่อหลีกเลี่ยงช่องโหว่ของทรัพยากร เพื่อให้งานนี้สำเร็จเราเรียกปิดที่ // 2 ซึ่งเป็นคำสั่งสุดท้ายของวิธีการ แต่จะเกิดอะไรขึ้นถ้ามีข้อยกเว้นเกิดขึ้นในบล็อกลอง? ในกรณีนี้การโทรปิดที่ // 2 ไม่เคยเกิดขึ้น ดังนั้นคุณต้องจับข้อยกเว้นนี้และแทรกการโทรอื่นเพื่อปิดที่ // 1 ก่อนที่จะออกอีกครั้งข้อยกเว้นนี้ สิ่งนี้ทำให้มั่นใจได้ว่าวัตถุ FileWriter จะถูกปิดก่อนที่จะออกจากวิธีการ การเขียนโค้ดเช่นนี้เป็นทั้งความยุ่งยากและผิดพลาดได้ง่าย แต่มันก็เป็นสิ่งจำเป็นหากไม่มีในที่สุด ในที่สุดรหัสก่อนหน้านี้สามารถเขียนลงในแบบฟอร์มต่อไปนี้:
โมฆะ Public WriteFile (String Filepath, String Filename, String args) พ่น IOException {FileWriter FW = FileWriter ใหม่ (FilePath + Filename); fw .close ();}}
บล็อกในที่สุดทำให้มั่นใจได้ว่าวิธีการปิดจะถูกดำเนินการเสมอโดยไม่คำนึงถึงว่ามีการออกข้อยกเว้นภายในบล็อกลองหรือไม่ ดังนั้นจึงมั่นใจได้ว่าวิธีการปิดจะถูกเรียกเสมอก่อนที่จะออกจากวิธีการ วิธีนี้คุณสามารถมั่นใจได้ว่าวัตถุ FileWriter ถูกปิดและคุณไม่ได้รั่วไหลออกมา
เสร็จสิ้น:
ตามข้อกำหนดภาษา Java JVM ทำให้มั่นใจได้ว่าวัตถุนี้ไม่สามารถเข้าถึงได้ก่อนที่จะเรียกฟังก์ชันสุดท้าย แต่ JVM ไม่รับประกันว่าจะเรียกฟังก์ชั่นนี้ นอกจากนี้ข้อมูลจำเพาะยังช่วยให้มั่นใจได้ว่าฟังก์ชั่นสุดท้ายจะทำงานได้มากที่สุดครั้งเดียว
โดยทั่วไปแล้วการสรุปจะใช้ในการปล่อยทรัพยากรบางอย่างที่ไม่ง่ายต่อการควบคุมและมีความสำคัญมากเช่นการดำเนินการ I/O และการเชื่อมต่อข้อมูลบางอย่าง การเปิดตัวทรัพยากรเหล่านี้มีความสำคัญอย่างยิ่งต่อแอปพลิเคชันทั้งหมด ในกรณีนี้โปรแกรมเมอร์ควรจัดการทรัพยากรเหล่านี้เป็นหลักผ่านโปรแกรม (รวมถึงการปล่อย) และเสริมวิธีการปล่อยทรัพยากรด้วยฟังก์ชั่นสุดท้ายเป็นส่วนเสริมเพื่อสร้างกลไกการจัดการประกันภัยคู่แทนที่จะพึ่งพาการสรุปทรัพยากรเท่านั้น
สรุป
สุดท้าย - ตัวดัดแปลง (คำหลัก) หากมีการประกาศคลาสสุดท้ายหมายความว่ามันไม่สามารถรับคลาสย่อยใหม่และไม่สามารถสืบทอดเป็นคลาสแม่ ดังนั้นชั้นเรียนจึงไม่สามารถประกาศได้ทั้งนามธรรมและสุดท้าย การประกาศตัวแปรหรือวิธีการเป็นขั้นสุดท้ายสามารถมั่นใจได้ว่าจะไม่เปลี่ยนแปลงระหว่างการใช้งาน ตัวแปรที่ประกาศว่าเป็นขั้นสุดท้ายจะต้องมีค่าเริ่มต้นเมื่อประกาศและสามารถอ่านได้ในการอ้างอิงในอนาคตและไม่สามารถแก้ไขได้ วิธีการที่ประกาศว่าเป็นขั้นสุดท้ายสามารถใช้ได้เท่านั้นและไม่สามารถใช้งานได้มากเกินไป
ในที่สุด - บล็อกสุดท้ายมีให้เพื่อดำเนินการล้างใด ๆ เมื่อมีการประมวลผลข้อยกเว้น หากมีการโยนข้อยกเว้นประโยคจับจับคู่จะถูกดำเนินการและการควบคุมจะเข้าสู่บล็อกในที่สุด (ถ้ามี)
สรุปชื่อวิธี เทคโนโลยี Java ช่วยให้การใช้วิธีการสรุป () ในการทำงานทำความสะอาดที่จำเป็นก่อนที่ตัวเก็บขยะจะล้างวัตถุจากหน่วยความจำ วิธีนี้เรียกโดยตัวเก็บขยะเมื่อพิจารณาว่าวัตถุนั้นไม่ได้อ้างอิง มันถูกกำหนดไว้ในคลาสวัตถุดังนั้นคลาสทั้งหมดสืบทอด คลาสย่อยแทนที่วิธีการสรุป () เพื่อจัดระเบียบทรัพยากรระบบหรือทำงานทำความสะอาดอื่น ๆ วิธีการสรุป () เรียกใช้กับวัตถุก่อนที่ตัวเก็บขยะจะลบออก