Final-keyword
The final
keyword is used to restrict modification in Java. It can be applied to:
- Variables (Prevents value reassignment)
- Methods (Prevents method overriding)
- Classes (Prevents inheritance)
1. Final variable:
Once we declare a variable as a final we can't re-assign the value of the variable.
Syntax:
final data_type variable_name = value;
Example:
package quipohouse;
class FinalVariable {
public static void main(String[] args) {
final int X = 5;
X = 10; // Error: Cannot reassign a final variable
System.out.println(X);
}
}
Output:
Error: Cannot assign a value to final variable 'X'
2. Final method:
Whenever we declare a method as a final our extended or inherited class can't override it.
Syntax:
class Class_Name {
final return_type method_name() {
// code
}
}
Example:
package quipohouse;
class A {
final void finalMethod() {
System.out.println("Inside Final Method");
}
}
class B extends A {
// Error: Cannot override final method
final void finalMethod() {
System.out.println("Inside Final Method");
}
public static void main(String[] args) {
B b = new B();
b.finalMethod();
}
}
Output:
Error: LinkageError occurred while loading main class B
java.lang.IncompatibleClassChangeError: class B overrides final method A.finalMethod()V
3. Final class:
Whenever we declare a class as a final it can't be extended or inherited to sub-classes.
Syntax:
final class Class_Name
{
//code
}
Example:
package quipohouse;
final class A {
}
class B extends A {
//gives error as final classes cant be extended
public static void main(String[] args) {
}
}
Output:
The type B cannot subclass the final class A