Loading

The final keyword is used to restrict modification in Java. It can be applied to:

  •   Variables (Prevents value reassignment)
  •   Methods (Prevents method overriding)
  •   Classes (Prevents inheritance)


1. Final variable:

Once we declare a variable as a final we can't re-assign the value of the variable.

Syntax:

final data_type variable_name = value;


Example: 

package quipohouse; class FinalVariable { public static void main(String[] args) { final int X = 5; X = 10; // Error: Cannot reassign a final variable System.out.println(X); } }


Output: 

Error: Cannot assign a value to final variable 'X'

2. Final method:

Whenever we declare a method as a final our extended or inherited class can't override it.


Syntax:

class Class_Name { final return_type method_name() { // code } }


Example:

package quipohouse; class A { final void finalMethod() { System.out.println("Inside Final Method"); } } class B extends A { // Error: Cannot override final method final void finalMethod() { System.out.println("Inside Final Method"); } public static void main(String[] args) { B b = new B(); b.finalMethod(); } }


Output:

Error: LinkageError occurred while loading main class B
	java.lang.IncompatibleClassChangeError: class B overrides final method A.finalMethod()V

 3. Final class:

Whenever we declare a class as a final it can't be extended or inherited to sub-classes.

Syntax:

final class Class_Name
{
   //code
}


Example:

package quipohouse;
final class A {
}
class B extends A {      
 //gives error as final classes cant be extended
	public static void main(String[] args) {
	}
}


Output:

The type B cannot subclass the final class A