English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java управление потоком

Java массив

Java面向对象(I)

Java面向对象(II)

Java面向对象(III)

Обработка исключений Java

Java список (List)

Java Queue (очередь)

Java Map集合

Java Set集合

Java Вход/Вывод (I/O)

Java Reader/Writer

Другие темы Java

Ключевое слово final Java

В этом руководстве мы将通过 примеры изучим final переменные, final методы и final классы в Java.

В Java, ключевое слово final используется для обозначения констант. Оно может использоваться с переменными, методами и классами.

Любой объект (переменная, метод или класс), объявленный final, может быть присвоен только один раз. То есть,

  • final переменная не может быть перинициализирована другим значением

  • final метод не может быть перезаписан

  • final класс не может быть наследован

1. Final переменная в Java

В Java, мы не можем изменить значение final переменной. Например,

class Main {
  public static void main(String[] args) {
    // Создание final переменной
    final int AGE = 32;
    // Попытка изменить final переменную
    AGE = 45;
    System.out.println("Age: " + AGE);
  }
}

В примере выше, мы создали final переменную с именем age. И мы пытаемся изменить значение final переменной.

При запуске программы появится следующая ошибка, указывающая на компиляционную ошибку.

cannot assign a value to final variable AGE
    AGE = 45;
    ^

Внимание:Рекомендуется использовать верхний регистр для объявления final переменных в Java.

2. Final метод в Java

Прежде чем понять final методы и final классы, убедитесь, что вы понимаетеJava наследование.

В Java, final метод не может быть переопределен подклассом. Например,

class FinalDemo {
    // Создать final метод
    public final void display() {
      System.out.println("Это Final метод.");
    }
}
class Main extends FinalDemo {
  // Попробовать переопределить final метод
  public final void display() {
    System.out.println("Final метод был переопределен.");
  }
  public static void main(String[] args) {
    Main obj = new Main();
    obj.display();
  }
}

В примере выше, мы создали final метод с именем display() внутри класса FinalDemo. Здесь, класс Main наследует класс FinalDemo.

Мы пытаемся переопределить final метод в классе Main. При запуске программы会出现以下错误消息,提示编译错误。

 display() в Main не может переопределять display() в FinalDemo
  public final void display() {
                    ^
  overridden method is final

3. Класс final в Java

В Java, класс final не может быть наследован другим классом. Например,

final class FinalClass {}}
    // Создать final метод
    public void display() {
      System.out.println("Это final метод.");
    }
}
class Main extends FinalClass {
  // Попробовать переопределить final метод
  public void display() {
    System.out.println("Переопределить final метод");
  }
  public static void main(String[] args) {
    Main obj = new Main();
    obj.display();
  }
}

В примере выше мы создали final класс под названием FinalClass. Здесь мы пытаемся наследовать final класс через класс Main.

При запуске программы появится следующая ошибка, указывающая на компиляционную ошибку.

cannot inherit from final FinalClass
class Main extends FinalClass {
                   ^