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:

  1. variable
  2. method
  3. 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 keyword in java

Final variable

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.

snippet
class Bike9{
  final int speedlimit=90;//final variable
  void run(){
   speedlimit=400;
  }
  public static void main(String args[]){
  Bike9 obj=new  Bike9();
  obj.run();
  }
 }//end of class
Output
Output:Compile Time Error

Final method

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

Example
snippet
class Bike{
  final void run(){System.out.println("running");}
}
   
class Honda extends Bike{
   void run(){System.out.println("running safely with 100kmph");}
   
   public static void main(String args[]){
   Honda honda= new Honda();
   honda.run();
   }
}
Output
Compile Time Error

Final class

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

Example
snippet
final class Bike{}
 
 class Honda1 extends Bike{
   void run(){System.out.println("running safely with 100kmph");}
   
   public static void main(String args[]){
   Honda1 honda= new Honda1();
   honda.run();
   }
 }
Output
Compile Time Error
Inheritance in Final method

Ans) Yes, final method is inherited but you cannot override it. For Example:

Example
snippet
class Bike{
  final void run(){System.out.println("running...");}
}
class Honda2 extends Bike{
   public static void main(String args[]){
    new Honda2().run();
   }
}
Output
Output:running...
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 PAN CARD number of an employee.

It can be initialized only in constructor.

Example
snippet
class Student{
int id;
String name;
final String PAN_CARD_NUMBER;
...
}
Initialization of blank final variable

Yes, but only in constructor. For example:

Example
snippet
class Bike10{
  final int speedlimit;//blank final variable
  
  Bike10(){
  speedlimit=70;
  System.out.println(speedlimit);
  }

  public static void main(String args[]){
    new Bike10();
 }
}
Output
Output: 70
Static blank final variable

A static final variable that is not initialized at the time of declaration is known as static blank final variable. It can be initialized only in static block.

Example
snippet
class A{
  static final int data;//static blank final variable
  static{ data=50;}
  public static void main(String args[]){
    System.out.println(A.data);
 }
}
Final parameter

If you declare any parameter as final, you cannot change the value of it.

Example
snippet
class Bike11{
  int cube(final int n){
   n=n+2;//can't be changed as n is final
   n*n*n;
  }
  public static void main(String args[]){
    Bike11 b=new Bike11();
    b.cube(5);
 }
}
Output
Output: Compile Time Error
Declaring constructor final

No, because constructor is never inherited.

Related Tutorial
Follow Us
https://www.facebook.com/Rookie-Nerd-638990322793530 https://twitter.com/RookieNerdTutor https://plus.google.com/b/117136517396468545840 #
Contents +