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 {
}
|
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() {
}
}
|
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 ;
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 ;
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
|