Final Keyword in OOP
Understanding final variables, methods, and classes in Object-Oriented Programming
What is Final Keyword?
The final keyword in Java is used to restrict the user. It can be applied to variables, methods, and classes. When a variable is declared as final, its value cannot be changed. When a method is declared as final, it cannot be overridden. When a class is declared as final, it cannot be extended.
Final Keyword Kya Hai? (Hinglish)
Java mein final keyword user ko restrict karne ke liye use hota hai. Ye variables, methods, aur classes par apply kiya ja sakta hai. Jab koi variable final declare kiya jata hai, to uska value change nahi kiya ja sakta. Jab koi method final declare kiya jata hai, to use override nahi kiya ja sakta. Jab koi class final declare kiya jata hai, to use extend nahi kiya ja sakta.
Uses of Final Keyword
- Final Variables (Constants)
- Final Methods (Non-overridable)
- Final Classes (Non-inheritable)
- Final Parameters
- Blank Final Variables
Example Program
// Final class (cannot be extended) final class Circle { // Final variable (constant) private final double PI = 3.14159; // Final instance variable private final double radius; // Constructor public Circle(double radius) { this.radius = radius; } // Final method (cannot be overridden) public final double calculateArea() { return PI * radius * radius; } // Final method with final parameter public final double calculateCircumference(final double multiplier) { return 2 * PI * radius * multiplier; } // Getter for radius public double getRadius() { return radius; } } // Class demonstrating blank final variable class Rectangle { // Blank final variable private final double length; private final double width; // Constructor to initialize blank final variables public Rectangle(double length, double width) { this.length = length; this.width = width; } // Method to calculate area public double calculateArea() { return length * width; } // Getters public double getLength() { return length; } public double getWidth() { return width; } } // Main class public class Main { public static void main(String[] args) { // Creating Circle object Circle circle = new Circle(5.0); System.out.println("Circle Information:"); System.out.println("Radius: " + circle.getRadius()); System.out.println("Area: " + circle.calculateArea()); System.out.println("Circumference (with multiplier 1.0): " + circle.calculateCircumference(1.0)); // Creating Rectangle object Rectangle rectangle = new Rectangle(4.0, 6.0); System.out.println("\nRectangle Information:"); System.out.println("Length: " + rectangle.getLength()); System.out.println("Width: " + rectangle.getWidth()); System.out.println("Area: " + rectangle.calculateArea()); // Demonstrating final variable behavior // The following lines would cause compilation errors: // circle.PI = 3.14; // Cannot change final variable // circle.radius = 10.0; // Cannot change final variable // rectangle.length = 5.0; // Cannot change final variable // rectangle.width = 7.0; // Cannot change final variable // Creating another Circle with different radius Circle circle2 = new Circle(7.0); System.out.println("\nSecond Circle Information:"); System.out.println("Radius: " + circle2.getRadius()); System.out.println("Area: " + circle2.calculateArea()); // Demonstrating final parameter behavior double multiplier = 2.0; System.out.println("Circumference (with multiplier " + multiplier + "): " + circle2.calculateCircumference(multiplier)); // The following would cause compilation error: // multiplier = 3.0; // Cannot change final parameter inside method } }
Program Explanation (Hinglish)
Is program mein humne final keyword ke different uses ka use kiya hai:
- Final Class: Circle class jo extend nahi ki ja sakti
- Final Variables: PI constant aur radius variable jo change nahi kiye ja sakte
- Final Methods: calculateArea() method jo override nahi ki ja sakti
- Final Parameters: calculateCircumference() method mein multiplier parameter
- Blank Final Variables: Rectangle class mein length aur width variables
Important Points
- Final variables must be initialized
- Final methods cannot be overridden
- Final classes cannot be extended
- Final parameters cannot be modified in the method
- Blank final variables must be initialized in constructor