Let us discuss final, finally and finalize in java with code examples.
What is final ?
- final is a keyword in java.
- final keyword can be applied to followings:
- Class
- Method(s)
- Variable(s)
final class:
- When final keyword is used with any class, then class becomes final class.
- The final class cannot be overridden by concrete class.
- If we extend final class, compiler will report an error.
- We will get the compilation error saying “cannot subclass the final class”.
Program to demonstrate final class in java.
final class Vehicle { private int doors; } class NewVehicle extends Vehicle { // Cannot subclass final class }
What is final method?
- When final keyword used with any method of class, then method becomes final method.
- The final method cannot be overridden by a method in concrete class. We will get the compilation error,
Program demonstrating final method of Person class.
class Person { public final void setSalary() { } } class Manager extends Person { public void setSalary() { // cannot override final method of Person class } }
What is final variable?
- When final keyword used with any variable of class
- then variable value cannot changed after being initialized.
- We will get the compilation error, if we try to assign new value to final variable(s).
final int salary = 100; //Compilation error: final variable cannot be assigned salary = 200;
finalize:
- finalize is a method of object class.
- protected void finalize()
- finalize method is used to clean up the resources.
- finalize method can be overridden by concrete class.
- The garbage collector may call the finalize method before destroying the current object.
- Its is not confirmed, when the finalize method will be called by garbage collector
Program to demonstrate finalize method
class TestFinalize { public static void main(String[] args) { TestFinalize obj = new TestFinalize(); System.out.println("Executing main method"); obj = null; // Signal the GC to collect the garbage System.gc(); } protected void finalize() { System.out.println("Executing finalize method"); } }
Output of finalize method:
Executing main method Executing finalize method
finally:
- finally is a code block, used with try and/or catch block.
- finally block always executes irrespective of exception occurred or not.
- As finally block always gets executed, irrespective of exceptions conditions,
- The clean up code is generally kept in finally block.
Program to demonstrate finally block in java
class Student { public static void main(String[] arg) { try { int salary = Integer.valueOf("NumberFormatException"); } catch (Exception exp) { System.out.println("Executing exception block"); } finally { System.out.println("Executing finally block"); } } }
Output of finally block:
Executing exception block Executing finally block