Final Keyword in Java


Final Keyword in Java

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

  • Variables (values cannot be changed)
  • Methods (cannot be overridden)
  • Classes (cannot be inherited)
Final Variables

A variable declared final becomes constant — you must assign a value, and it cannot change after assignment.

Example:
    
    final int x = 10;
    // x = 20;  // ❌ Error: cannot assign a value to final variable
    
    
Final Reference Variable

If the variable is a reference type, the object it points to can still be modified, but the reference itself cannot change.

    
    final int[] arr = {1, 2, 3};
    arr[0] = 10;      // ✅ Allowed
    // arr = new int[5];  // ❌ Not allowed
    
    
Final Methods

A method marked final cannot be overridden by subclasses.

Example:
    
    class Animal {
        final void sound() {
            System.out.println("Animal sound");
        }
    }

    class Dog extends Animal {
        // void sound() {}  // ❌ Error: Cannot override final method
    }
    
    
Final Classes

A class declared as final cannot be extended.

Example:
    
    final class Vehicle {
        void run() {
            System.out.println("Vehicle is running");
        }
    }

    // class Car extends Vehicle {}  // ❌ Error: Cannot subclass final class
    
    
Summary Table
final Applied To Meaning
Variable Constant value (cannot be reassigned)
Method Cannot be overridden
Class Cannot be extended (no subclasses)
When to Use final
Use Case Why
Constants Ensure values like PI, MAX_LIMIT, etc. don’t change
Prevent Inheritance Improve security and avoid misuse
Immutable Classes Build classes like String, which can't be modified