Різниця між Final, нарешті та Finalize на Java
Зміст
- Порівняльна діаграма
- Визначення фіналу
- Кінцева змінна
- Заключні методи
- Підсумковий клас
- Визначення Фіналізувати
- Висновок:
Слова "остаточно, остаточно і остаточно" лежить в межах Яви. Кожному з них забезпечується різне функціонування. Основна відмінність остаточного та остаточного полягає в тому остаточний є модифікатором доступу, нарешті є блоком і доопрацювати є методом об’єктного класу. Існують деякі інші відмінності між остаточним та остаточним, які обговорюються у таблиці порівняння.
- Порівняльна діаграма
- Визначення
- Ключові відмінності
- Висновок
Порівняльна діаграма
Основа для порівняння | Фінал | Нарешті | Довершити |
---|---|---|---|
Основні | Фінал - це "Ключове слово" та "модифікатор доступу" на Java. | Нарешті - «блок» на Java. | Фіналізація - це "метод" на Java. |
Застосовується | Final - це ключове слово, застосовне до класів, змінних та методів. | Нарешті - це блок, який завжди асоціюється з блоком "try and catch". | finalize () - метод, застосовний до об'єктів. |
Робочий | (1) Кінцева змінна стає постійною, і її не можна перепризначити. (2) Кінцевий метод не може бути замінений дочірнім класом. (3) Випускний клас не можна продовжувати. | Блок "нарешті", очистіть ресурси, використані в блоці "спробувати". | Метод доопрацювання виконує очищення діяльності, пов’язаної з об’єктом до його знищення. |
Виконання | Остаточний метод виконується після його виклику. | "Нарешті" блок виконується відразу після виконання блоку "try-catch". | метод finalize () виконується безпосередньо перед знищенням об'єкта. |
Визначення фіналу
"Final" - ключове слово на Java. Це модифікатор доступу. "Кінцеве" ключове слово застосовно до класів, методів та змінних. Давайте подивимось, як це працює з кожним із них.
Кінцева змінна
- Коли до змінної застосовується остаточне ключове слово, воно не може бути додатково змінено.
- Кінцева змінна повинна бути ініціалізована, коли вона оголошена.
- У загальній умові кодування кінцеві змінні оголошуються в ПОНЯТТІ.
- Кінцева змінна не займає пам’ять на кожній інстанції.
Заключні методи
- Коли метод у класі оголошується як остаточний, його не можна перекрити його підкласом.
- Невеликі методи, оголошені остаточними, компілятором можуть бути «вбудовані», що зменшить накладні витрати виклику функцій та підвищить підвищення продуктивності.
- Викликані методи виклику вирішуються динамічно, але коли метод оголошується як остаточний, його не можна перекрити. Отже, виклик функції може бути вирішений під час компіляції.
клас A {final void meth () {System.out.ln ("Це остаточний метод."); }} клас B поширює A {void meth () {// Клас B не може успадкувати метод класу A. System.out.ln ("Не переосмислює"); }}
Підсумковий клас
- Коли клас оголошується як остаточний, він не може бути успадкований жодним підкласом.
- Оголошення класу як остаточного автоматично оголосить усі його методи остаточними.
- Ви не можете оголосити клас як "абстрактним", так і "остаточним".
остаточний клас A {// ...} клас B поширюється A {// Клас B не може успадкувати клас A // ...}
- У Java "нарешті" - це блок, який завжди асоціюється з блоком "try / catch".
- Блок "нарешті" виконується після блоку спробу / лову та перед кодом, що слідує за блоком спробу / лову.
- Блок "нарешті" буде виконувати, викинуто виняток чи ні.
- Коли викинутий виняток, і жоден блок лову не відповідає виняткові навіть тоді, блок "нарешті" виконується.
- Коли метод повертається до абонента зсередини блоку try / catch через uncaught виняток або явне повернення, блок "нарешті" виконується безпосередньо перед тим, як метод повернеться до абонента.
- Блок "нарешті" використовується для очищення ресурсів або звільнення пам'яті, що використовується в блоці "спробувати".
- Блок "нарешті" є необов'язковим, але це найкраща практика, щоб написати остаточно блок після блоку спробувати.
клас FinalExample {// Цей метод викидає виняток із методу. static void procA () {try {System.out.ln ("всередині procA"); кинути нову RuntimeException ("демонстрацію"); } нарешті {System.out.ln ("нарешті ProAs"); }} // Повернення з блоку спробу. static void procB () {try {System.out.ln ("всередині procB"); повернення; } нарешті {System.out.ln ("нарешті ProcBs"); }} // Виконати блок спробу нормально. static void procC () {try {System.out.ln ("всередині procC"); } нарешті {System.out.ln ("нарешті процесори"); }} публічний статичний недійсний main (String args) {try {procA (); } catch (Виняток е) {System.out.ln ("Виняток вилучено"); } procB (); procC (); }} // виведення всередині procA, нарешті, виключення ProA, нарешті, виняток, що потрапив усередину procB, нарешті, у procC, нарешті, у procC
Визначення Фіналізувати
- Фіналізувати - це метод в об'єктному класі.
- Об'єкт може містити деякі не-Java-ресурси, такі як обробка файлів; тоді він повинен бути звільнений, перш ніж його знищити.
- Цей метод викликається сміттєзбірником до повного знищення об'єкта.
- Цей метод виконує дії по очищенню об'єкта до його знищення.
Загальна форма методу finalize () полягає в наступному.
protected void finalize () {// код завершення тут}
Метод завершення оголошується захищеним, щоб не можна було отримати доступ до нього поза класом.
Цей метод завжди називають перед вивезенням сміття.
- Ключове слово final - це модифікатор доступу, нарешті - це блок, а finalize - метод.
- Ключове слово остаточне застосовне до класів, змінних та методів класів, нарешті, це блок, пов'язаний з блоком спробу вилову, який використовується для обробки винятків, остаточний - метод, який працює лише на об'єктах.
- Змінна, щойно оголошена як остаточна, стає постійною і її не можна перепризначити знову, метод, оголошений як остаточний, не можна перекривати, а клас, який оголошений як остаточний, ніколи не може бути успадкований. Нарешті блок використовується для очищення ресурсів, використовуваних блоком спробу і лову. Метод завершення використовується для очищення ресурсів, які використовуються об'єктом до знищення об'єкта.
Висновок:
Остаточний, нарешті та доопрацьований, має різний ефект, коли застосовується до методу.