The кінцевий спосіб в Java використовується як a модифікатор відсутності доступу застосовується лише до a змінна , а метод , або a клас. Це звикло обмежити користувача на Java .
Наступні різні контексти де використовується фінал:
- змінна
- метод
- Клас
Характеристики ключового слова final в Java:
У Java ключове слово final використовується, щоб вказати, що змінна, метод або клас не можуть бути змінені або розширені. Ось деякі його характеристики:
- Кінцеві змінні: Коли змінну оголошено як final, її значення не можна змінити після її ініціалізації. Це корисно для оголошення констант або інших значень, які не слід змінювати.
- Остаточні методи : Коли метод оголошено як final, він не може бути замінений підкласом. Це корисно для методів, які є частиною публічного API класу і не повинні бути змінені підкласами.
- Підсумкові заняття: Коли клас оголошено як остаточний, він не може бути розширений підкласом. Це корисно для класів, які призначені для використання як є і не повинні бути змінені чи розширені.
- Ініціалізація: Кінцеві змінні повинні бути ініціалізовані або під час оголошення, або в конструкторі класу. Це гарантує, що значення змінної встановлено і не може бути змінено.
- Продуктивність: Використання final іноді може підвищити продуктивність, оскільки компілятор може оптимізувати код більш ефективно, коли він знає, що змінна або метод не можуть бути змінені.
- Безпека: Фінал може допомогти підвищити безпеку, запобігаючи зміні зловмисним кодом конфіденційних даних або поведінки.
Загалом, ключове слово final є корисним інструментом для покращення якості коду та забезпечення того, що певні аспекти програми неможливо змінити чи розширити. Оголошуючи змінні, методи та класи як final, розробники можуть писати більш безпечний, надійний і підтримуваний код.
Остаточна змінна Java
Коли змінну оголошено за допомогою кінцеве ключове слово , його значення не можна змінити , по суті, a постійний . Це також означає, що ви має ініціалізувати кінцеву змінну .
Якщо кінцева змінна a посилання , це означає, що змінна не може бути повторно прив’язаний до посилання інший об’єкт, але внутрішній стан об’єкта, на який вказує ця посилальна змінна, можна змінити, тобто ви можете додавати або видаляти елементи з кінцевий масив або остаточний збір.
Добре представляти кінцеві змінні у верхньому регістрі, використовуючи підкреслення для розділення слів.
приклад:
Java public class ConstantExample { public static void main(String[] args) { // Define a constant variable PI final double PI = 3.14159; // Print the value of PI System.out.println('Value of PI: ' + PI); } }>
Вихід
Value of PI: 3.14159>
Вихід:
Value of PI: 3.14159>
Різні методи використання кінцевої змінної
Давайте розглянемо різні методи, за допомогою яких ми можемо використовувати кінцеву змінну в Java.
1. кінцева змінна
приклад:
// Final variable final int THRESHOLD = 5;>
2. Пуста кінцева змінна
приклад:
// Blank final variable final int THRESHOLD;>
3. Статична кінцева змінна
приклад:
// Final static variable PI static final double PI = 3.141592653589793;>
4. Статична порожня кінцева змінна
приклад:
// Blank final static variable static final double PI;>
Ініціалізація кінцевої змінної
Ми повинні ініціалізувати кінцеву змінну, інакше компілятор видасть помилку під час компіляції. Остаточну змінну можна ініціалізувати лише один раз або через an ініціалізатор або заяву про призначення. Є три способи ініціалізації кінцевої змінної:
незмінний список
- Ви можете ініціалізувати кінцеву змінну, коли її оголошено. Цей підхід є найпоширенішим. Кінцева змінна називається a пуста кінцева змінна якщо це ні ініціалізується під час оголошення. Нижче наведено два способи ініціалізації пустої кінцевої змінної.
- Порожню кінцеву змінну можна ініціалізувати всередині блок ініціалізації екземпляра або конструктор. Якщо у вашому класі є більше одного конструктора, його потрібно ініціалізувати в усіх, інакше під час компіляції виникне помилка.
- Порожню кінцеву статичну змінну можна ініціалізувати всередині a статичний блок .
Давайте розглянемо ці два різні способи ініціалізації кінцевої змінної
приклад:
Java // Java Program to demonstrate Different // Ways of Initializing a final Variable // Main class class GFG { // a final variable // direct initialize final int THRESHOLD = 5; // a blank final variable final int CAPACITY; // another blank final variable final int MINIMUM; // a final static variable PI // direct initialize static final double PI = 3.141592653589793; // a blank final static variable static final double EULERCONSTANT; // instance initializer block for // initializing CAPACITY { CAPACITY = 25; } // static initializer block for // initializing EULERCONSTANT static{ EULERCONSTANT = 2.3; } // constructor for initializing MINIMUM // Note that if there are more than one // constructor, you must initialize MINIMUM // in them also public GFG() { MINIMUM = -1; } }>
У наведеному вище коді не було основного методу, оскільки це було просто для ілюстрації, щоб краще зрозуміти, щоб зробити висновки:
Спостереження 1: Коли використовувати кінцеву змінну?
Єдина відмінність між звичайною змінною та кінцевою змінною полягає в тому, що ми можемо повторно призначити значення звичайній змінній, але ми не можемо змінити значення кінцевої змінної після її призначення. Отже, кінцеві змінні повинні використовуватися лише для значень, які ми хочемо залишати постійними протягом усього виконання програми.
Спостереження 2: Посилання на кінцеву змінну.
Коли кінцева змінна є посиланням на об’єкт, тоді ця кінцева змінна називається кінцева змінна посилання . Наприклад, фінал StringBuffer змінна виглядає наступним чином:
final StringBuffer sb;>
Як ми всі знаємо, кінцева змінна не може бути перепризначена. Але у випадку кінцевої змінної посилання внутрішній стан об’єкта, на який вказує ця змінна посилання, можна змінити. Зауважте, що це не перепризначення.
Ця властивість в остаточний називається неперехідність . Щоб зрозуміти, що мається на увазі під внутрішнім станом об’єкта, як показано в наведеному нижче прикладі, наступним чином:
Приклад 1:
Java // Java Program to demonstrate // Reference of Final Variable // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of StringBuilder class // Final reference variable final StringBuilder sb = new StringBuilder('Geeks'); // Printing the element in StringBuilder object System.out.println(sb); // changing internal state of object reference by // final reference variable sb sb.append('ForGeeks'); // Again printing the element in StringBuilder // object after appending above element in it System.out.println(sb); } }>
Вихід
Geeks GeeksForGeeks>
The неперехідність властивість також застосовується до масивів, оскільки масиви є об’єктами в Java. Масиви з кінцеве ключове слово також називаються кінцеві масиви .
Примітка: Як обговорювалося вище, кінцеву змінну не можна перепризначити, оскільки це призведе до помилки під час компіляції.
приклад 2:
Java // Java Program to Demonstrate Re-assigning // Final Variable will throw Compile-time Error // Main class class GFG { // Declaring and customly initializing // static final variable static final int CAPACITY = 4; // Main driver method public static void main(String args[]) { // Re-assigning final variable // will throw compile-time error CAPACITY = 5; } }>
Вихід:
Пам'ятайте: Коли кінцева змінна створюється всередині методу/конструктора/блоку, вона називається локальною кінцевою змінною, і її потрібно ініціалізувати один раз там, де вона створюється. Дивіться програму нижче для локальної кінцевої змінної.
приклад:
Java // Java program to demonstrate // local final variable // Main class class GFG { // Main driver method public static void main(String args[]) { // Declaring local final variable final int i; // Now initializing it with integer value i = 20; // Printing the value on console System.out.println(i); } }>
Вихід
20>
Запам’ятайте ці ключові моменти, як вони сприймаються, перш ніж рухатися далі, як зазначено нижче:
- Зверніть увагу на різницю між C++ конст змінні та Java остаточний змінні. змінні const у C++ мають бути присвоєно значення під час оголошення . Для кінцевих змінних у Java це так не Необхідно як ми бачимо в наведених вище прикладах. Остаточній змінній можна присвоїти значення пізніше, але лише один раз.
- остаточний з foreach цикл : остаточний з for-кожне твердження є правовим твердженням.
приклад:
Java // Java Program to demonstrate Final // with for-each Statement // Main class class GFG { // Main driver method public static void main(String[] args) { // Declaring and initializing // custom integer array int arr[] = { 1, 2, 3 }; // final with for-each statement // legal statement for (final int i : arr) System.out.print(i + ' '); } }>
Вихід
1 2 3>
Пояснення виходу: Оскільки i змінна виходить за межі з кожною ітерацією циклу, вона повторно оголошується кожною ітерацією, що дозволяє використовувати той самий маркер (i) для представлення кількох змінних.
приклад:
Java public class Example { public static void main(String[] args) { final int VALUE = 10; // declaring a final variable System.out.println('The value is: ' + VALUE); // VALUE = 20; // uncommenting this line will cause a compiler error // System.out.println('The new value is: ' + VALUE); final String MESSAGE = 'Hello, world!'; // declaring a final variable System.out.println(MESSAGE); MyClass myObj = new MyClass(); myObj.printMessage(); myObj.printFinalMessage(); // MyOtherClass extends MyClass {} // uncommenting this line will cause a compiler error } } class MyClass { final String message = 'Hello!'; // declaring a final instance variable void printMessage() { System.out.println(message); } void printFinalMessage() { final String finalMessage = 'Hello, final!'; System.out.println(finalMessage); } } final class MyOtherClass { // declaring a final class // ... }>
Вихід
The value is: 10 Hello, world! Hello! Hello, final!>
Java Підсумкові заняття
Коли клас оголошено за допомогою остаточний ключове слово в Java, воно називається a випускний клас . Випускного класу бути не може розширений (успадкований) .
Є два варіанти використання кінцевого класу:
Використання 1: Один, безперечно, запобігати успадкування , оскільки підсумкові заняття не можна продовжити. Наприклад, всі Класи-обгортки люблю Ціле число , Поплавок , тощо є підсумковими заняттями. Ми не можемо їх продовжити.
final class A { // methods and fields } // The following class is illegal class B extends A { // COMPILE-ERROR! Can't subclass A }>
Використання 2: Інше використання final з класами - to створити незмінний клас як і попередньо визначені Рядок клас. Не можна зробити клас незмінним, не зробивши його остаточним.
Остаточний метод Java
Коли метод оголошено за допомогою остаточний ключове слово, воно називається a кінцевий спосіб на Java. Остаточним методом бути не може перевизначено .
The Об'єкт клас робить це — ряд його методів є остаточними. Ми повинні оголосити методи з ключовим словом final, для якого ми повинні дотримуватися тієї самої реалізації в усіх похідних класах.
Ілюстрація: Кінцеве ключове слово з методом
class A { final void m1() { System.out.println('This is a final method.'); } } class B extends A { void m1() { // Compile-error! We can not override System.out.println('Illegal!'); } }>
Переваги final Keyword в Java:
Ключове слово final у Java надає кілька переваг, зокрема:
- Забезпечення незмінності: Якщо змінну або посилання позначено як остаточну, її значення не можна змінити після призначення. Це допомагає гарантувати, що дані є незмінними та не можуть бути випадково чи зловмисно змінені.
- Поліпшення продуктивності : використання final іноді може допомогти підвищити продуктивність, оскільки віртуальна машина Java (JVM) може ефективніше оптимізувати код, коли знає, що певні значення або посилання не можна змінити.
- Як полегшити розуміння коду: Оголошуючи змінні, методи або класи як остаточні, розробники можуть зробити свій код легшим для розуміння та міркування. Коли значення або посилання позначено як остаточне, зрозуміло, що воно не зміниться, що може спростити аналіз коду та налагодження.
- Повторне використання коду просування: Оголошуючи методи як остаточні, розробники можуть запобігти заміні підкласами їх. Це може сприяти повторному використанню коду та зменшити дублювання, оскільки підкласи повинні використовувати реалізацію методу батьківського класу.
- Підвищення безпеки: Використання final може допомогти підвищити безпеку, запобігаючи зміні зловмисним кодом конфіденційних даних або поведінки.
Загалом, ключове слово final є корисним інструментом для покращення якості коду та забезпечення того, що певні аспекти програми неможливо змінити. Оголошуючи змінні, методи та класи як final, розробники можуть писати більш безпечний, надійний і підтримуваний код.
Додаткові приклади та поведінку кінцевих методів і кінцевих класів , будь ласка, подивіться Використання final із успадкуванням. Будь ласка, перегляньте анотація на java статті для відмінностей між остаточний і анотація .
Пов’язане запитання на співбесіді (важливо): Різниця між final, finally і finalize в Java
Висновок
Остаточне ключове слово в Java — це метод для створення обмежених для користувача змінних, методів або класів. У цьому підручнику ми докладно розглядаємо заключне ключове слово Java і розуміємо всі його контексти.
Контексти пояснюються за допомогою програм Java у прикладах, що забезпечує повне розуміння теми.
Остаточне ключове слово Java – поширені запитання
Що таке кінцевий метод у Java?
Остаточним методом у Java є метод, оголошений за допомогою кінцеве ключове слово , що означає, що його реалізація не може бути замінена підкласами.
Чи успадковується остаточний метод?
Ні, у Java кінцевий метод не може бути успадкований підкласом. Це означає, що підклас не може перевизначити остаточний метод .
Яке ключове слово final і static у Java?
Кінцеве ключове слово: Він використовується для оголошення змінних, методів або класів як незмінних.
сортувати список масивів у javaСтатичне ключове слово: воно використовується для оголошення членів класу (змінних і методів), які належать самому класу, а не окремим об’єктам.
Чи можемо ми написати остаточне ключове слово з рядком на Java?
Так, ви можете оголосити змінну з ключовим словом final і призначити їй рядковий літерал.