final เป็น non-access modifier สำหรับองค์ประกอบของ Java ตัวปรับ final ใช้สำหรับทำให้การนำไปใช้งานของคลาส เมธอด และตัวแปรเป็น final (ไม่สามารถเปลี่ยนแปลงได้)
ตัวแปร Final (Final Variables)
ตัวแปร final สามารถกำหนดค่าเริ่มต้นได้อย่างชัดเจนเพียงครั้งเดียว ตัวแปรอ้างอิงที่ประกาศเป็น final ไม่สามารถกำหนดให้อ้างอิงไปยังออบเจ็กต์ที่แตกต่างกันได้
อย่างไรก็ตาม ข้อมูลภายในออบเจ็กต์สามารถเปลี่ยนแปลงได้ ดังนั้น สถานะของออบเจ็กต์สามารถเปลี่ยนแปลงได้ แต่ไม่ใช่การอ้างอิง
กับตัวแปร ตัวปรับ final มักใช้ร่วมกับ static เพื่อทำให้ค่าคงที่เป็นตัวแปรคลาส
ตัวอย่าง
public class Test { final int value = 10; // ต่อไปนี้เป็นตัวอย่างการประกาศค่าคงที่: public static final int BOXWIDTH = 6; static final String TITLE = "Manager"; public void changeValue() { value = 12; // จะให้ข้อผิดพลาด } }เมธอด Final (Final Methods)
เมธอด final ไม่สามารถถูก override โดยคลาสย่อยใดๆ ได้ ตามที่กล่าวไว้ก่อนหน้านี้ ตัวปรับ final ป้องกันไม่ให้เมธอดถูกแก้ไขในคลาสย่อย
เจตนาหลักของการทำให้เมธอดเป็น final จะเป็นว่เนื้อหาของเมธอดไม่ควรถูกเปลี่ยนแปลงโดยภายนอก
ตัวอย่าง
คุณประกาศเมธอดโดยใช้ตัวปรับ final ในการประกาศคลาส ดังต่อไปนี้
public class Test { public final void changeName() { // body of method } }คลาส Final (Final Classes)
วัตถุประสงค์หลักของการใช้คลาสที่ประกาศเป็น final คือเพื่อป้องกันไม่ให้คลาสถูกสร้างเป็นคลาสย่อย หากคลาสถูกทำเครื่องหมายเป็น final แล้ว ไม่มีคลาสใดสามารถสืบทอดคุณสมบัติใดๆ จากคลาส final นั้นได้
ตัวอย่าง
public final class Test { // body of class }