Loading

The final keyword in Java is used to impose restrictions on variables, methods, and classes.

The final keyword can be used in all below levels:

  • Variable
  • Method
  • Class

1. Final variable: 

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

Syntax:

final data_type variable_name=value;


Example: 

package quipohouse;
class FinalVariable {
	public static void main(String[] args) {

		final int X = 5;
		      X=10;           //gives error as re-assignment is not permitted
		System.out.println(X);
	}
}


Output: 

5

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 {
       // method overriding
	final void finalMethod() {        // gives compilation error as it cannot be overriden
		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