Phase 10 of 20 · Topic 10.4

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.