Final Keyword In Java

The Final keyword in java is used to restrict the user. The java final keyword can be used in many context. Final can be:
  • variable
  • method
  • class
  • The final keyword can be applied with the variables, a final variable that have no value it is called blank final variable or uninitialized final variable. It can be initialized in the constructor only. The blank final variable can be static also which will be initialized in the static block only. We will have detailed learning of these. Let's first learn the basics of final keyword.

    final variable in java

    If you make any variable as final, you cannot change the value of final variable(It will be constant).

    Example:

    There is a final variable speedlimit, we are going to change the value of this variable, but It can't be changed because final variable once assigned a value can never be changed.
    class Car {  
    final int speedlimit = 140;  //final variable  
    void run() {  
    speedlimit = 200;  
       }  
    public static void main(String args[]) {  
    Car obj =  new  Car();  
    obj.run();  
      }  }  //end of class      
    

    Output:

    Compile Time Error

    final method in java

    If you make any method as final, you cannot override it.

    Example:

    class Car {  
    final void run() {
    System.out.println("running");
     } }  
    class Alto extends Car {  
    void run() {
    System.out.println("running with 110kmph");
      }  
    public static void main(String args[]){  
    Alto A = new Alto();  
    A.run();  
      } }     
    

    Output:

    Compile Time Error

    final class in java

    If you make any class as final, you cannot extend it.

    Example:

    final class Car { }  
    class Alto1 extends Car {  
    void run() {
    System.out.println("running with 110kmph");
      }  
    public static void main(String args[]) {  
    Alto1  A= new Alto1();  
    A.run();  
      }  }    
    

    Output:

    Compile Time Error

    Is final method inherited?

    Yes, final method is inherited but you cannot override it.

    Example:

    class Car {  
    final void run() {
    System.out.println("running with safely");
     } }  
    class Alto2 extends Car {   
    public static void main(String args[]) {  
    new Alto2().run();  
      } }      
    

    Output:

    running with safely

    What is blank or uninitialized final variable?

    A final variable that is not initialized at the time of declaration is known as blank final variable.
    If you want to create a variable that is initialized at the time of creating object and once initialized may not be changed, it is useful. For example AADHAR CARD number of an employee.
    It can be initialized only in constructor.

    Example:

    class Employee{  
    int id;  
    String name;  
    final String AADHAR_CARD_NUMBER;  
    ...  
    }      
    

    Can we initialize blank final variable?

    Yes, but only in constructor.

    Example:

    class Car2 {  
    final int speedlimit;  //blank final variable  
    Car2() {  
    speedlimit = 100;  
    System.out.println(speedlimit);  
      }  
    public static void main(String args[]) {  
    new Car2();  
     }