⬅ Previous Topic
Java extends KeywordNext Topic ⮕
Java finally Keyword⬅ Previous Topic
Java extends KeywordNext Topic ⮕
Java finally Keywordfinal
Keyword in JavaIn Java, the final
keyword is a powerful modifier that brings immutability and restriction to your code. It's used to signal that something should not be changed — whether it’s a variable, a method, or even an entire class. Think of it as Java’s way of saying: "Hands off!"
When you declare a variable as final
, you are telling Java: “This variable’s value should be assigned only once.” Once a final variable is assigned, it cannot be modified again.
public class FinalVariableExample {
public static void main(String[] args) {
final int speedLimit = 60;
System.out.println("Speed Limit: " + speedLimit);
// speedLimit = 80; // Uncommenting this will cause a compile-time error
}
}
Speed Limit: 60
Explanation: The variable speedLimit
is marked as final. Attempting to change its value results in a compilation error. This is especially useful for constants or values you want to protect from accidental changes.
With objects, final
prevents reassignment — but does not make the object immutable.
class Car {
String model = "Honda";
}
public class FinalReferenceExample {
public static void main(String[] args) {
final Car myCar = new Car();
myCar.model = "Toyota"; // Allowed
// myCar = new Car(); // Not allowed
System.out.println("Car model: " + myCar.model);
}
}
Car model: Toyota
Explanation: The reference myCar
is final, so it cannot point to another Car
object. However, the contents of the object (like its model
) can still be changed.
When you mark a method as final
, it cannot be overridden by subclasses. This ensures that the core logic of the method remains untouched — ideal for methods that form the backbone of a class’s behavior.
class Parent {
final void show() {
System.out.println("Final method in Parent");
}
}
class Child extends Parent {
// void show() { System.out.println("Trying to override"); } // Error!
}
Final method in Parent
Explanation: The method show()
is declared final in the parent class, so any attempt to override it in a child class will lead to a compile-time error.
A final
class is the ultimate boundary — it cannot be extended or subclassed. This is commonly seen in utility or security-related classes.
final class Vehicle {
void drive() {
System.out.println("Driving safely...");
}
}
// class Bike extends Vehicle {} // Compile-time error
Driving safely...
Explanation: Once a class is marked final, it’s sealed. It can still be instantiated, but no subclassing is allowed — this ensures the class's design is preserved as-is.
You can also declare method parameters as final to ensure that their values are not reassigned within the method.
public class FinalParameterExample {
void display(final int x) {
System.out.println("Value: " + x);
// x = 50; // Not allowed
}
}
Value: [whatever value is passed]
Explanation: This is useful for making sure that parameters passed to methods remain consistent, especially in recursive logic or callback scenarios.
final
final double PI = 3.14;
)⬅ Previous Topic
Java extends KeywordNext Topic ⮕
Java finally KeywordYou can support this website with a contribution of your choice.
When making a contribution, mention your name, and programguru.org in the message. Your name shall be displayed in the sponsors list.