Ключевое слово final
Ключевое слово final применяется к переменным, методам и классам.
Для переменной оно означает, что после первого присваивания значение
изменить нельзя. Для метода - что его нельзя переопределить в классе-наследнике.
Для класса - что от него нельзя унаследоваться. Если переменная объявлена
как final, при объявлении ей нужно сразу присвоить значение
(либо сделать это в конструкторе).
Синтаксис
final тип имяПеременной = значение;
final тип имяМетода(параметры)
{
// тело метода
}
final class ИмяКласса
{
// тело класса
}
Пример
Давайте объявим переменную со значением 10 и попробуем
изменить её после этого:
public class Main
{
public static void main(String[] args)
{
final int num = 10;
num = 20;
System.out.println(num);
}
}
Результат выполнения кода:
error: cannot assign a value to final variable num
Пример
Давайте объявим final переменную строки и выведем её значение:
public class Main
{
public static void main(String[] args)
{
final String str = "abcde";
System.out.println(str);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте попробуем переопределить final метод
в классе-наследнике:
public class Main
{
public static void main(String[] args)
{
Child child = new Child();
child.show();
}
}
class Parent
{
public final void show()
{
System.out.println("parent");
}
}
class Child extends Parent
{
public void show()
{
System.out.println("child");
}
}
Результат выполнения кода:
error: show() in Child cannot override show() in Parent