final (Java)
В мові програмування 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
для методів. Перша — ви хочете заборонити перевизначення (англ. override) вашого методу у класах-нащадках (перевантаження (англ. overload) дозволене). А друга причина є чіткість, визначеність та продуктивність для роботи компілятора. Для попередніх версій 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 {…}