final — keyword preventing reassignment/overriding/extension. finally — block that always executes after try-catch. finalize() — deprecated method called by GC before destruction.Vivid analogy: final is like a sealed contract — once signed, cannot change. finally is like a cleanup crew — always shows up. finalize() is like a demolition inspector — checks before destruction but visits are unpredictable.Why it matters: final enforces design intent at compile time. finally is essential for resource cleanup. finalize() is deprecated — use AutoCloseable instead.javafinal int MAX = 100;// MAX = 200; // Compile error!final StringBuilder sb = new StringBuilder();sb.append("Hello"); // OK — modifying object// sb = new StringBuilder(); // Error — can't reassignConnection conn = null;try { conn = DriverManager.getConnection(url);} catch (SQLException e) { e.printStackTrace();} finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { } }}protected void finalize() throws Throwable { // DO NOT USE — use AutoCloseable instead}- final — compile-time constant/non-overridable.- finally — runtime cleanup guarantee.- finalize() — deprecated, unreliable.