Діаграма порівняння
Основа для порівняння | Фінал | Нарешті | Завершити |
---|---|---|---|
Основний | Фінал - це ключове слово і модифікатор доступу в Java. | Нарешті, це "блок" в Java. | Завершення - це "метод" на Java. |
Застосовується | Фінальним є ключове слово, що застосовується до класів, змінних і методів. | Нарешті, це блок, який завжди пов'язаний з блоком try і catch. | finalize () - метод, застосовний до об'єктів. |
Робота | (1) Остаточна змінна стає постійною, і її не можна перепризначити. (2) Остаточний метод не може бути перевизначений дочірнім класом. (3) Випускний клас не може бути продовжений. | Блок "нарешті", очищає ресурси, що використовуються в блоці "try". | Метод фіналізації виконує очищення діяльності, пов'язаної з об'єктом, до її знищення. |
Виконання | Остаточний метод виконується після його виклику. | "Нарешті" блок виконується відразу після виконання блоку "try-catch". | Метод finalize () виконується безпосередньо перед руйнуванням об'єкта. |
Визначення фіналу
"Final" - це ключове слово в Java. Це модифікатор доступу. Ключове слово "final" застосовується до класів, методів і змінних. Подивимося, як вона працює з кожним з них.
Кінцева змінна
- Коли до змінної застосовується остаточне ключове слово, воно не може бути додатково змінено.
- Остаточна змінна повинна бути ініціалізована, коли вона оголошена.
- У загальній конвенції кодування кінцеві змінні оголошуються в UPPERCASE.
- Кінцева змінна не займає пам'ять на основі кожного примірника.
final int FILE_OPEN = 2;
Заключні методи
- Коли метод у класі оголошується як остаточний, його не можна перекривати підкласом.
- Невеликі методи, які оголошені остаточними, можуть бути зроблені компілятором "inline", що зменшить накладні витрати на виклик функції і підвищить продуктивність.
- Виклик перевизначених методів вирішується динамічно, але коли метод оголошений остаточним, його не можна перевизначити. Таким чином, виклик функції може бути вирішений під час компіляції.
class A {final void meth () {System.out.println ("Це остаточний метод."); }} клас B розширює {void meth () {// Clas B не може наслідувати метод класу A. System.out.println ("Не перевизначає"); }}
Заключний клас
- Коли клас оголошується як остаточний, то він не може бути успадкований будь-яким підкласом.
- Оголошення класу як остаточне автоматично оголошує всі його методи кінцевими.
- Ви не можете оголосити клас як «абстрактним» і «остаточним».
Остаточний клас A {// ...} клас B розширює A {// Клас B не може наслідувати клас A // ...}
Визначення Нарешті
- У Java "finally" - це блок, який завжди пов'язаний з блоком try / catch.
- Блок «нарешті» виконується після блоку try / catch і перед кодом блоку try / catch.
- Блок «нарешті» виконуватиме, чи буде виключено виключення.
- Коли виключення викидається, і жодний блок вилучення не збігається з виключенням, то виконується блок "нарешті".
- Коли метод повертається до абонента з блоку try / catch через виключення або невизначений оператор return, блок "нарешті" виконується безпосередньо перед тим, як метод повертається до абонента.
- Блок «нарешті» використовується для очищення ресурсів або звільнення пам'яті, що використовується в блоці «try».
- Блок «нарешті» є необов'язковим, але хороша практика, нарешті, писати блок після блоку try / catch.
class FinallyExample {// Цей метод кидає виняток з методу. static void procA () {try {System.out.println ("всередині procA"); кинути новий RuntimeException ("demo"); } нарешті {System.out.println ("нарешті procA's"); }} // Повернення з блоку try. static void procB () {try {System.out.println ("всередині procB"); повернення; } нарешті {System.out.println ("procB's нарешті"); }} // Виконати блок спроб нормально. static void procC () {try {System.out.println ("всередині procC"); } нарешті {System.out.println ("нарешті procC's"); } public public void main (String args []) {try {procA (); } catch (Exception e) {System.out.println ("Виняток спійманий"); } procB (); procC (); }} // вихід всередині procA, нарешті, виняток, отриманий всередині procB, нарешті всередині procC
Визначення фіналізації
- Finalize - метод у класі об'єктів.
- Об'єкт може містити деякі не-Java ресурси, такі як ручка файлу; тоді вона повинна бути звільнена, перш ніж вона буде знищена.
- Цей метод викликається збирачем сміття, перш ніж повністю знищить об'єкт.
- Цей метод виконує очищення об'єкта перед його знищенням.
Загальна форма методу finalize () є наступною.
protected void finalize () {// тут код завершення}
Метод finalize оголошується захищеним, так що до нього не можна звертатися за межі класу.
Цей метод завжди викликається перед збором сміття.
Ключові відмінності між фіналом, нарешті, і завершенням
- Ключове слово final є модифікатором доступу, нарешті, є блоком і завершується є методом.
- Ключове слово final є застосовним до класів, змінних і методів класів, нарешті - це блок, пов'язаний з блоком try catch, який використовується для обробки виключень, finalize - метод, який працює тільки на об'єктах.
- Змінна, що оголошується як фінальна, стає постійною і не може бути перепризначена знову, метод, оголошений остаточним, не може бути перевизначений, і клас, що оголошений як остаточний, ніколи не може бути успадкований. Блок нарешті використовується для очищення ресурсів, використовуваних блоком try і catch. Метод finalize використовується для очищення ресурсів, що використовуються об'єктом, перш ніж об'єкт буде знищено.
Висновок:
Остаточний, остаточний і завершений має інший ефект при застосуванні на методі.