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