final keyword in java

Final keyword can be applied on

  • variable
    • Blank final variable
    • Blank final static variable
  • method
  • class
  • objects

Final keyword cannot be applied on :

  • Constructor
  • abstract class and interface

Final variable :

  • A final variable once assigned a value cannot be changed.
  • A final variable that is not initialized at the time of declaration is known as 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.

When a compilation error is thrown in final instance variable ?

  • When an final instance method is not initialized, this instance variable can be initialized by
    • Directly assigning a value.
    • Initializing it via constructor (If once done should be done is all constructors else compilation error)
    • Initializing it in the instance initializer block.
  • Note : If final instance variable is assigned value in any one of the above three ways then it cannot be reassigned Example : If the final instance variable is assigned value in instance initializer block then it cannot be reassigned in the constructor block

When a compilation error is thrown in final static variable ?

  • When an final instance method is not initialized, this instance variable can be initialized by
    • Directly assigning a value.
    • Initializing inside a static block
  • Note : If final static variable is assigned value in any one of the above two ways then it cannot be reassigned Example : If the final static variable is assigned value directly then in static block then it cannot be reassigned.

Final method :

  • Once you make a method final you cannot override it. (Note but it can be overloaded)
  • Once you declare a parameter of a method as final then you cannot change the value of that parameter in that method

Final class :

Once you make a class final you cannot extend it

Final Object (reference):

  • You can modify the properties (instance variable data) of an object but you cannot reassign a new object to that reference.
class Employee {
	public int value = 5;
}

class Demo {
	public static void FinalReference(String args[]) {

		final Employee example = new Employee(); // declaration
		example.value = 6; // Modifying the objects properties creates no disturbance

		Employee another = new Employee();
		example = another; // Attempting to change the objects reference creates a compilation error
	}
}

To do :

  • final keyword can be applied on which all keyword
  • how to make a immutable class
  • final interview questions
  • can you overload a final method
  • blank or uninitialized final variable and usefulness in memory
  • static blank final variable
  • can we declare a final constructor
  • can a inner class be final

Leave a Comment