What does the “final” keyword mean in front of a variable? A method? A class?
FINAL for a variable : value is constant
FINAL for a method : cannot be overridden
FINAL for a class : cannot be derived
A final variable cannot be reassigned, but it is not constant. For instance,
final StringBuffer strBuf = new StringBuffer()
It is valid. strBuf cannot have a new value in it,but nothing stops operations on the object that it refers, including destructive operations. Also, a final method cannot be overridden or hidden by new access specifications.This means that the compiler can choose to in-line the invocation of such a method.(I don’t know if any compiler actually does this, but it’s true in theory.) The best example of a final class is String, which defines a class that cannot be derived.