В мові програмування Java, службове слово final використовується в кількох варіантах для визначення чогось, що пізніше не може бути зміненим. final може використовуватися при роботі з даними, методами та класами.

final та змінні Багато мов програмування мають можливість повідомити компілятор, що певна змінна, або точніше частина інформації є «константою». В Java, final змінна може бути визначена (ініціалізована) лише один раз і більше не може змінюватися.

Приклад: public class Sphere {

public static final double PI = 3.141592653589793; // this might as well be a constant public final double radius; public final double xpos; public final double ypos; public final double zpos;

Sphere(double x, double y, double z, double r) { radius = r; xpos = x; ypos = y; zpos = z;

[...] }

порожній final Java дозволяє використання blank finals. Тобто полів класів, які визначені як final, але не ініціалізовані. У будь-якому випадку така змінна повинна бути ініціалізована перед тим, як з нею будуть працювати.

final методи Є дві причини використання final для методів. Перша — ви хочете заборонити перевизначення () вашого методу у класах-нащадках (перевантаження () дозволене). А друга причина є чіткість, визначеність та продуктивність для роботи компілятора. Для попередніх версій Java друга причина мала значення. Але починаючи з Java SE5/6 final використовується лише, коли ви чітко хочете зазначити, що хочете заборонити перевизначення вашого методу.

Приклад: public class MyClass { public final void myFinalMethod() {...} }

final класи Якщо ви визначаєте свій клас як final, то це означає, що ви не хочете щоб хтось породжував свої класи від вашого.

В Java standard library classes наприклад java.lang.System та java.lang.String.

Приклад: public final class MyFinalClass {…}

Посилання Discussion about a controversy on final keyword