final Keyword: Classes, Methods & Variables
1Concept
The `final` keyword serves 3 distinct purposes: 1. `final variable`: Constant reference that cannot be reassigned once initialized; 2. `final method`: Prevents subclasses from overriding the method; 3. `final class`: Prevents inheritance entirely (e.g. `java.lang.String`, `Integer`).
2Architecture Diagram
final class String ---> Subclassing Forbidden (Compile Error!) final void execute() ---> Overriding Forbidden in Subclasses final int MAX_USERS ---> Reassignment Forbidden
3Code Example
Core Java
public class FinalMasteryDemo {
static final class ImmutableConfig {
public final String apiKey;
public ImmutableConfig(String apiKey) {
this.apiKey = apiKey;
}
}
public static void main(String[] args) {
final ImmutableConfig config = new ImmutableConfig("SEC_KEY_8921");
System.out.println("Immutable API Key: " + config.apiKey);
// config = new ImmutableConfig("NEW"); // Error: Cannot assign final variable
}
}4Expected Output
Immutable API Key: SEC_KEY_8921
5Key Takeaways
- ✓Marking classes `final` enhances security and enables compiler inlining optimizations.
- ✓A final object reference prevents re-pointing the reference, but internal object state can still mutate.
- ✓Blank final variables must be initialized in the constructor or initializer blocks.